上一篇文章明河简单讲解了grunt使用,这一篇文章将接着讲解grunt的几个常见任务。
先来看个图:
上图是这二年前端炙手可热的项目,这么项目多多少少都需要构建工具支持,grunt是不二之选。
前面二篇教程,明河大量使用grunt-contrib-uglify插件进行演示,一方面是uglify(压缩js文件)任务,基本上是代码发布前必须执行的,另一方面grunt-contrib-uglify非常典型,堪称grunt的插件的代码。
接下来明河再拎出一些常用的插件,演示grunt的用法。
grunt-contrib-concat
非常常用的grunt插件,用于合并任意文件,用法也非常简单:
npm install grunt-contrib-concat --save-dev |
grunt.loadNpmTasks( 'grunt-contrib-concat' );
|
(后面的插件演示就不再贴安装插件和注册插件的代码,大同小异。)
任务:合并src下的js文件到build目录,合并后文件名为built.js。
grunt.initConfig({ concat: {
options: {
//文件内容的分隔符
separator: ';'
},
dist: {
src: [ 'src/*.js' ],
dest: 'build/built.js'
}
}
});
|
向文件追加一些额外信息:
grunt.initConfig({ pkg: grunt.file.readJSON( 'package.json' ),
concat: {
options: {
//文件内容的分隔符
separator: ';' ,
stripBanners: true ,
banner: '/*! <%= pkg.name %> - v<%= pkg.version %> - ' +
'<%= grunt.template.today("yyyy-mm-dd") %> */'
},
dist: {
}
}
});
|
自定义进程函数,比如你需要在合并文件前,对文件名进行处理等。
grunt.initConfig({ pkg: grunt.file.readJSON( 'package.json' ),
concat: {
options: {
// Replace all 'use strict' statements in the code with a single one at the top
banner: "'use strict';\n" ,
process: function (src, filepath) {
return '// Source: ' + filepath + '\n' +
src.replace(/(^|\n)[ \t]*( 'use strict' | "use strict" );?\s*/g, '$1' );
}
},
dist: {
}
}
});
|
grunt-contrib-copy
顾名思义,用于复制文件或目录的插件。
copy: { main: {
files: [
{src: [ 'path/*' ], dest: 'dest/' , filter: 'isFile' }, // 复制path目录下的所有文件
{src: [ 'path/**' ], dest: 'dest/' }, // 复制path目录下的所有目录和文件
]
}
} |
有复制,必然有删除。
grunt-contrib-clean
clean: { build: {
src: [ "path/to/dir/one" , "path/to/dir/two" ]
}
} |
grunt-contrib-compress
用于压缩文件和目录成为zip包,不是很常用。
compress: { main: {
options: {
archive: 'archive.zip'
},
files: [
{src: [ 'path/*' ], dest: 'internal_folder/' , filter: 'isFile' }, path下所有的js
{src: [ 'path/**' ], dest: 'internal_folder2/' }, // path下的所有目录和文件
]
}
} |
grunt-contrib-jshint
jshint用于javascript代码检查(并会给出建议),发布js代码前执行jshint任务,可以避免出现一些低级语法问题。
jshint拥有非常丰富的配置,可以自由控制检验的级别。
module.exports = function (grunt) {
// 构建任务配置
grunt.initConfig({
//读取package.json的内容,形成个json数据
pkg: grunt.file.readJSON( 'package.json' ),
jshint: {
options: {
//大括号包裹
curly: true ,
//对于简单类型,使用===和!==,而不是==和!=
eqeqeq: true ,
//对于首字母大写的函数(声明的类),强制使用new
newcap: true ,
//禁用arguments.caller和arguments.callee
noarg: true ,
//对于属性使用aaa.bbb而不是aaa['bbb']
sub: true ,
//查找所有未定义变量
undef: true ,
//查找类似与if(a = 0)这样的代码
boss: true ,
//指定运行环境为node.js
node: true
},
//具体任务配置
files: {
src: [ 'src/*.js' ]
}
}
});
// 加载指定插件任务
grunt.loadNpmTasks( 'grunt-contrib-jshint' );
// 默认执行的任务
grunt.registerTask( 'default' , [ 'jshint' ]);
}; |
配置的含义,明河都写在代码注释中,就不再累述了。
运行grunt
命令后:
jshint比较有意思的是还可以结合grunt-contrib-concat插件使用,在合并文件前(后)对js进行检查。
grunt.initConfig({ concat: {
dist: {
src: [ 'src/foo.js' , 'src/bar.js' ],
dest: 'dist/output.js'
}
},
jshint: {
beforeconcat: [ 'src/foo.js' , 'src/bar.js' ],
afterconcat: [ 'dist/output.js' ]
}
}); |
类似的还有个grunt-contrib-csslint插件,用于css代码检查,用法基本一样,只是配置上存在差异,貌似css检查的需求有些鸡肋,就不再演示了。
grunt-contrib-mincss
非常常用的插件,用于css压缩。
用法相对于grunt-contrib-uglify简单很多:
mincss: { compress: {
files: {
"path/to/output.css" : [ "path/to/input_one.css" , "path/to/input_two.css" ]
}
}
} |
grunt-css-combo
我的同事紫英写的css合并的插件,用于css分模块书写时的合并(如果你不使用less、sass、stylus,建议使用这个插件)。
grunt.initConfig({ css_combo: {
files: {
'dest/index.combo.css' : [ 'src/index.css' ],
},
},
}) |
文件目录的demo请看github。
src/index.css的代码如下:
@import "./mods/mod1.css" ;
@import "./mods/mod2.css" ;
#content {} |
通过@import
来合并模块css文件。
相关推荐
### 常用Grunt插件 在本Demo中,我们可能会使用到以下插件: 1. `grunt-contrib-concat`:用于合并多个文件为一个文件。 2. `grunt-contrib-uglify`:JavaScript代码压缩。 3. `grunt-contrib-watch`:监听文件...
grunt-wp-boilerplate, WordPress插件模板的Grunt初始化模板 grunt-wp-boilerplate在插件的基础上创建一个WordPress插件,基于 WordPress插件的模板。安装如果你还没有这样做,请安装 grunt-init:npm install -g ...
grunt-wordpress, 用于将内容发布到WordPress的Grunt插件 grunt使用 WordPress 发布内容到WordPress的Grunt插件。支持这里项目通过捐赠在Gratipay上。正在启动Grunt的wordpress就像任何其他的插件插件一样工作。 ...
grunt-purifycss, 使用grunt构建工具删除未使用的CSS purifycss使用 PurifyCSS 清除不必要的CSS正在启动这个插件需要 Grunt ~0.4.5If之前,请务必先查看一下如何创建 Gruntfile插件,以及安装和使用Grunt插件。...
本书《Automate with Grunt》深入浅出地介绍了如何利用Grunt来优化前端工作流程,不仅适合初学者入门,也能为资深开发者提供实用的技巧。 #### 二、Grunt简介 Grunt是一款基于Node.js的自动化构建工具,它通过定义...
使用Grunt插件** Grunt拥有大量的社区插件,可以处理各种前端开发需求。例如,为了合并和压缩JS文件,你可以在`package.json`中添加以下依赖: ```json "devDependencies": { "grunt": "^1.4.1", "grunt-...
1. 加载插件:在Gruntfile.js中,使用`grunt.loadNpmTasks('plugin-name')`加载你需要的任务插件。 2. 配置任务:在配置对象中,定义任务的属性和选项,如源文件和目标文件路径。 3. 注册任务:使用`grunt....
安装elasticsearch-head插件需要的grunt二进制安装包
grunt-bower-task, 面向 Bower的Grunt插件 grunt-bower-task 安装 Bower 软件包明智地安装。正在启动注意:如果你以前没有使用过 grunt,那么一定要检查一下 guide指南 guide 。 请注意,这里插件仅使用 grunt 的
grunt-msbuild, 用于MSBuild和XBuild的Grunt插件 grunt-msbuild使用Grunt生成带有MSBuild和XBuild的项目正在启动这个插件需要 Grunt ~0.4.0 。 换句话说,它应该在 0.4.0或者更高版本上工作。If之前,请务必先查看...
虽然Grunt通常会用到`grunt-contrib-less`插件来处理LESS,但直接使用`lessc`也可以进行简单的编译。例如: ```bash lessc input.less output.css ``` 这将把`input.less`转换成`output.css`。 **node_modules...
node.js前端部署和打包插件grunt-bbb,如果你使用了require.js那你选择他作为前端部署工具就对了,示例:https://github.com/backbone-boilerplate/grunt-bbb,解压到C:\Users\Administrator\AppData\Roaming\npm\ ...
grunt-electron-installer, 为电子应用构建 Windows 安装程序的插件插件 电子安装程序Grunt插件 Grunt插件,为电子应用程序构建 Windows 安装程序,使用 Squirrel 。安装npm install --save-dev grunt-electron-...
如果您以前没有使用过 ,请务必查看指南,因为它解释了如何创建以及安装和使用 Grunt 插件。 熟悉该过程后,您可以使用以下命令安装此插件: npm install grunt-doiuse --save-dev 安装插件后,可以使用以下 ...
- 对于大型项目,考虑使用`grunt-load-config`或`grunt-include-source`等插件来更好地组织和管理配置。 - 结合其他工具如`jshint`进行代码质量检查,`autoprefixer`自动添加CSS前缀等,提升项目质量。 7. **持续...
如果您以前没有使用过 ,请务必查看指南,因为它解释了如何创建以及安装和使用 Grunt 插件。 熟悉该过程后,您可以使用以下命令安装此插件: npm install grunt-jenkins-build-info --save-dev 安装插件后,可以...
对于团队协作或持续集成环境,离线安装包尤其有用,因为它可以确保所有开发者和服务器都使用相同的 Grunt 版本和插件,从而避免版本冲突和不必要的网络延迟。 总结来说,这个“Grunt 离线安装包”提供了一种在无...
### Grunt.js Cookbook知识点概述 ...通过学习本书,读者不仅能够掌握Grunt.js的基本使用方法,还能深入了解如何利用Grunt.js来优化开发流程、提高生产力。无论是初学者还是有一定经验的开发者,都能够从中获益匪浅。
如果您以前没有使用过 ,请务必查看指南,因为它解释了如何创建以及安装和使用 Grunt 插件。 熟悉该过程后,您可以使用以下命令安装此插件: npm install grunt-rollup --save-dev 安装插件后,可以使用以下 ...