编辑:这个问题实际上似乎特定于uglifyjs本身。在http://lisperator.net/uglifyjs/等在线工具中运行代码会产生相同的结果
我有一个简单的任务,简单地连接一些文件然后使用uglify来缩小生成的文件。
提交a:
console.log('this is file a');
文件b:
(function () {
console.log('this is file b');
});
concat工作正常,我在dist目录(testout.js)中得到了连接文件,如下所示:
(function () {
console.log('this is file b');
});
console.log('this is file a');
uglify任务运行并生成testdist.min.js。看起来像这样:
console.log("this is file a");
没有包含文件b中的代码!一旦我从文件b中删除了闭包,第二个console.log就包含在uglify的输出中。
这是整个grunt文件。
module.exports = function (grunt) {
grunt.initConfig({
pkg: grunt.file.readJSON('package.json'),
concat: {
test: {
src: [
'src/filea.js',
'src/fileb.js'
],
dest: 'dist/testout.js'
},
},
uglify: {
thing: {
files: {
'dist/testdist.min.js' : ['dist/testout.js']
}
}
},
watch: {
js: {
files: ['src/*.js'],
tasks: ['concat','uglify']
}
}
});
grunt.loadNpmTasks('grunt-contrib-concat');
grunt.loadNpmTasks('grunt-contrib-uglify');
grunt.loadNpmTasks('grunt-contrib-watch');
grunt.loadNpmTasks('grunt-contrib-jshint');
grunt.registerTask('default', ['watch']);
}