我不确定为什么还没有提到这一点,但我确实认为这个线程有点过时了。因为我在寻找解决这个问题的过程中偶然发现了这个问题,所以我想我会在这里快速写一篇关于GruntJS的文章,以供其他 JS 新手查找。
本质上,正确配置的 Gruntfile.js 将能够围绕 JS 执行各种任务,包括但不限于:连接文件、缩小文件、代码检查等等。
您可以grunt
在 Ubuntu 上安装:
$ sudo apt-get install nodejs
$ sudo npm -g install grunt-cli
$ cd /path/to/my/project
--- Assumming you have a package.json file already in place ---
$ npm install grunt --save-dev
--- Install grunt plugins you wish to use ---
$ npm install grunt-contrib-concat --save-dev
$ npm install grunt-contrib-uglify --save-dev
$ npm install grunt-contrib-jshint --save-dev
$ npm install grunt-contrib-watch --save-dev
在GruntJS 网站上,有一篇关于如何使用 GruntJS 的很好的文章,但这里有一个示例 Gruntfile.js,它将:
- lint 所有 JS 文件(
app.js
在当前目录和目录.js
中的所有文件ngmodules
)。
- 将文件连接并保存到
dist/package-name.js
.
- 缩小连接文件并将其保存到
dist/package-name.min.js
.
Gruntfile.js
:
module.exports = function(grunt) {
grunt.initConfig({
pkg: grunt.file.readJSON('package.json'),
concat: {
options: {
separator: ';'
},
dist: {
src: ['app.js', 'ngmodules/**/*.js'],
dest: 'dist/<%= pkg.name %>.js'
}
},
uglify: {
options: {
banner: '/*! <%= pkg.name %> <%= grunt.template.today("dd-mm-yyyy") %> */\n'
},
dist: {
files: {
'dist/<%= pkg.name %>.min.js': ['<%= concat.dist.dest %>']
}
}
},
jshint: {
files: ['Gruntfile.js', 'app.js', 'ngmodules/**/*.js'],
options: {
// options here to override JSHint defaults
globals: {
jQuery: true,
console: true,
module: true,
document: true
}
}
},
watch: {
files: ['<%= jshint.files %>'],
tasks: ['jshint']
}
});
grunt.loadNpmTasks('grunt-contrib-uglify');
grunt.loadNpmTasks('grunt-contrib-jshint');
grunt.loadNpmTasks('grunt-contrib-watch');
grunt.loadNpmTasks('grunt-contrib-concat');
grunt.registerTask('default', ['jshint', 'concat', 'uglify']);
};