背景
大约30分钟前,我刚开始使用grunt。所以请耐心等待。
但我有一个相当简单的脚本,它会查看我的js,然后为我将其全部压缩到一个文件中。
代码
"use strict";
module.exports = function (grunt) {
// load all grunt tasks
require('matchdep').filterDev('grunt-*').forEach(grunt.loadNpmTasks);
grunt.initConfig({
pkg: grunt.file.readJSON('package.json'),
uglify: {
options: {
beautify: true,
report: 'gzip'
},
build: {
src: ['docroot/js/*.js', 'docroot/components/pages/*.js', 'docroot/components/plugins/*.js'],
dest: 'docroot/js/main.min.js'
}
},
watch: {
options: {
dateFormat: function(time) {
grunt.log.writeln('The watch finished in ' + time + 'ms at' + (new Date()).toString());
grunt.log.writeln('Waiting for more changes...');
}
},
js: {
files: '<%= uglify.build.src %>',
tasks: ['uglify']
}
}
});
grunt.registerTask('default', 'watch');
}
问题
每次编译时都会包含我的main.min.js。这意味着我的min.js得到了2x、4x、8x、16x等。最好的方法是添加一个异常并忽略main.min.js
吗?
在src数组的端添加
'!docroot/js/main.min.js'
这将排除它!将其转换为排除。
http://gruntjs.com/api/grunt.file#grunt.file.expand
匹配以开头的模式的路径!将从返回的数组中排除。模式是按顺序处理的,所以包含和排除顺序很重要。
这并不是grunt uglify特有的,但任何使用grunt约定指定文件的任务都将以这种方式工作。
不过,作为一般建议,我建议将构建的文件放在源文件之外的其他地方。就像在根dist
文件夹中一样。