Grunt

安装Grunt-cli:

cnpm install -g grunt-cli

新建项目文件夹,生成package.json:

cnpm init -y

安装 Grunt 和所需要的插件

安装grunt:

cnpm instal grunt --save-dev

安装所需插件:

cnpm install --save-dev grunt-contrib-concat grunt-contrib-jshint grunt-contrib-sass grunt-contrib-uglify grunt-contrib-watch grunt-contrib-connect

配置 Gruntfile.js 的语法

与 Grunt 有关的主要有三块代码:任务配置代码插件加载代码任务注册代码

任务配置代码就是调用插件配置一下要执行的任务和实现的功能,插件加载代码就是把需要用到的插件加载进来,任务注册代码就是注册一个 task,里面包含刚在前面编写的任务配置代码。

任务配置代码

grunt.initConfig({
  pkg: grunt.file.readJSON(‘package.json‘),
  uglify: {
    options: {
      banner: ‘/*! <%= pkg.name %> <%= grunt.template.today("yyyy-mm-dd") %> */\n‘
    },
    build: {
      src: ‘src/<%= pkg.name %>.js‘,
      dest: ‘build/<%= pkg.name %>.min.js‘
    }
  }
});

插件加载代码

这个就超级简单了,由于上面任务需要用到 grunt-contrib-uglify,当 grunt-contrib-uglify 安装到我们的项目之后,写下下面代码即可加载:

grunt.loadNpmTasks(‘grunt-contrib-uglify‘);

任务注册代码

插件也加载了,任务也布置了,下面我们得注册一下任务,使用:

grunt.registerTask(‘default‘, [‘uglify‘]);

当你在项目目录执行 grunt 的时候,它会执行注册到 default 上面的任务。

也就是说,当我们执行 grunt 命令的时候,uglify 的所有代码将会执行。我们也可以注册别的 task,例如:

grunt.registerTask(‘compress‘, [‘uglify:build‘]);

如果想要执行这个 task,我们就不能只输入 grunt 命令了,我们需要输入 grunt compress 命令来执行这条 task,而这条 task 的任务是 uglify 下面的 build 任务,也就是说,我们只会执行 uglify 里面 build 定义的任务,而不会执行 uglify 里面定义的其他任务。

配置 Gruntfile.js

先从简单的入手,我们先来配置一下编译 Scss 文件的 task。先新建一个 Gruntfile.js 文件,把大体的配置结构复制进去:

module.exports = function(grunt) {

  var sassStyle = ‘expanded‘;

  grunt.initConfig({
    pkg: grunt.file.readJSON(‘package.json‘),
    sass: {

    }
  });

  grunt.loadNpmTasks(‘grunt-contrib-sass‘);

  grunt.registerTask(‘outputcss‘,[‘sass‘]);
  grunt.registerTask(‘default‘);

};

最终结果:

module.exports = function(grunt) {

  var sassStyle = ‘expanded‘;

  grunt.initConfig({
    pkg: grunt.file.readJSON(‘package.json‘),
    sass: {
       output : {
        options: {
          style: sassStyle
        },
        files: {
          ‘./style.css‘: ‘./scss/style.scss‘
        }
      }
    },
    concat: {
      options: {
        separator: ‘‘,
      },
      dist: {
        src: [‘./src/plugin.js‘, ‘./src/plugin2.js‘],
        dest: ‘./global.js‘,
      },
    },
    uglify: {
      compressjs: {
        files: {
          ‘./global.min.js‘: [‘./global.js‘]
        }
      }
    },
    jshint: {
      all: [‘./global.js‘]
    },
    watch: {
      scripts: {
        files: [‘./src/plugin.js‘,‘./src/plugin2.js‘],
        tasks: [‘concat‘,‘jshint‘,‘uglify‘]
      },
      sass: {
        files: [‘./scss/style.scss‘],
        tasks: [‘sass‘]
      },
      livereload: {
          options: {
              livereload: ‘<%= connect.options.livereload %>‘
          },
          files: [
              ‘index.html‘,
              ‘style.css‘,
              ‘js/global.min.js‘
          ]
      }
    },
    connect: {
      options: {
          port: 9000,
          open: true,
          livereload: 35729,
          // Change this to ‘0.0.0.0‘ to access the server from outside
          hostname: ‘localhost‘
      },
    server: {
        options: {
          port: 9001,
          base: ‘./‘
        }
      }
    }
  });

  grunt.loadNpmTasks(‘grunt-contrib-sass‘);
  grunt.loadNpmTasks(‘grunt-contrib-concat‘);
  grunt.loadNpmTasks(‘grunt-contrib-jshint‘);
  grunt.loadNpmTasks(‘grunt-contrib-uglify‘);
  grunt.loadNpmTasks(‘grunt-contrib-watch‘);
  grunt.loadNpmTasks(‘grunt-contrib-connect‘);

  grunt.registerTask(‘outputcss‘,[‘sass‘]);
  grunt.registerTask(‘concatjs‘,[‘concat‘]);
  grunt.registerTask(‘compressjs‘,[‘concat‘,‘jshint‘,‘uglify‘]);
   grunt.registerTask(‘watchit‘,[‘concat‘,‘jshint‘,‘uglify‘,‘connect‘,‘watch‘]);
  grunt.registerTask(‘default‘);

};
时间: 2024-10-02 08:53:12

Grunt的相关文章

grunt 入门学习

前端工作流,Grunt上手指南 Posted@2013-04-20 7:15 a.m. CategoriesGrunt ,  javascript 我想先花点时间回忆一下作为一个前端需要做的工作(Loading...) JS合并 JS压缩 CSS压缩 CSS Sprite 图片优化 测试 静态资源缓存(版本更新) ... 对应的,一个全副武装的前端可能会是这样的: JSHint CSSLint Jade CoffeeScript RequireJS/SeaJS Compass/Stylus/Le

grunt使用心得

这是我在使用前端构建工具grunt的一些总结,希望对大家有一定的帮助,也希望大家一起讨论一起进步. http://cobish.github.io/%E5%89%8D%E7%AB%AF/2015/06/28/grunt-use.html

Grunt的wiredep任务的配置说明文档

Automatically inject Bower components into the HTML file 自动把Bower的组件注入到HTML文件中 如果我们通过以下方式安装组件 bower install jquery --save bower install sea.js --save 安装后会在bower.json文件中看到 { "name": "framework-demo", "private": true, "dep

grunt之easy demo

首先安装grunt-cli cnpm install -g grunt-cli 接下来创建package.json,内容如下 {        "name": "demo",        "file": "zepto",        "version": "0.1.0",        "description": "demo",       

grunt默认只允许localhost和访问,如何设置外部IP地址访问

使用Yeoman生成器创建web项目,使用grunt server启动,默认访问地址为127.0.0.1:9000或者localhost:9000 如果用本机地址如:192.168.1.100:9000访问默认是访问不到的 想要通过IP地址访问需要修改Gruntfile.js的配置: 修改connect节点配置,原本的配置如下: 可以看到hostname上面有注释,大概意思是:将地址改为'0.0.0.0'可从外部访问. 修改成下图,我们的grunt server就可以从外部访问啦!

【grunt】两小时入门

目录: 1. 用途和场景 2.Grunt插件 3.相关资源 4.环境安装 5.开始学习 5.1 一个新项目 5.2 生成package.json 5.3 在项目中安装grunt和相关插件 5.4 Gruntfile语法 5.4.1 配置任务 5.4.2 加载插件 5.4.3 注册任务 5.5 为我们的项目配置gruntfile.js 5.6 执行任务 6.后续学习 1. 用途和场景 jshint代码检查 代码合并 代码压缩--js/css/html都可以 SASS/LESS编译css watch

Grunt Bower构建前端

Grunt + Bower-前端构建利器 目前比较流行的WEB开发的趋势是前后端分离.前端采用重量级的Javascript框架,比如Angular,Ember等,后端采用restful API的Web Service服务,通过JSON格式进行数据交互. 对于后端服务语言来说,不论是Ruby的rake,Java中的Maven或Gradle,或是Scala中的SBT,他们都能够提供编译运行.运行测试.打包部署.依赖管理等功能.再加上强大的package系统,让它可以插拔式的使用很多强大的功能,像数据

grunt 合并压缩js和css文件(二)

具体node及文件配置请看: grunt 安装使用(一) 要压缩的文件 --src/ ajax.js assets.js touch.js zepto.js 目录结构: dist/ node_modules/ src/ Gruntfile.js package.json package.json是依赖库文件 Gruntfile.js是执行步骤程序 一.js合并压缩 第一次需要先安装grunt.执行 npm install -g grunt-cli 进行安装.如果已经安装,可以忽略. 1.pack

Grunt的初级应用

Grunt是什么呢? Grunt是JavaScript世界的构建工具.为什么要用构建工具?一句话:自动化.对于需要反复重复的任务,例如压缩(minification).编译.单元测试.linting等,自动化工具可以减轻你的劳动,简化你的工作.当你在 Gruntfile 文件正确配置好了任务,任务运行器就会自动帮你或你的小组完成大部分无聊的工作. 为什么要使用Grunt? Grunt生态系统非常庞大,并且一直在增长.由于拥有数量庞大的插件可供选择,因此,你可以利用Grunt自动完成任何事,并且花

Grunt压缩图片

今天我们来说一下用Grunt来压缩图片和JS吧! 首先要安装插件: 这是压缩图片的; npm install --save-dev gulp-imagemin 这是压缩JS的: npm install --save-dev gulp-imagemin 然后引入依赖: var gulp = require("gulp"); 在引入插件: var imagemin = require('gulp-imagemin');//压缩图片 var uglifyJS = require('gulp-