Jam*_*ber 53 javascript node.js uglifyjs gruntjs
背景
我刚刚开始使用grunt大约30分钟前.所以忍受我.
但是我有一个相当简单的脚本,它将查看我的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');
}
Run Code Online (Sandbox Code Playgroud)
题
我的main.min.js每次都被包含在编译中.意思是我的min.js得到2x,4x,8x,16x等等.最好的方法是添加一个例外并忽略main.min.js吗?
Mar*_*sen 119
到src数组的末尾,添加
'!docroot/js/main.min.js'
Run Code Online (Sandbox Code Playgroud)
这将排除它.的!把它变成一个排除.
http://gruntjs.com/api/grunt.file#grunt.file.expand
路径匹配以开头的模式!将从返回的数组中排除.模式按顺序处理,因此包含和排除顺序非常重要.
这不是特定于grunt uglify,但任何使用grunt约定来指定文件的任务都将以这种方式工作.
作为一般建议虽然我建议将构建的文件放在除源文件之外的其他地方.就像在根dist文件夹中一样.