華萊士的答案很棒,但如果你想要縮小的文件在grunt開始之前不存在(即如果你依賴於另一個任務),它將不起作用,因爲之前生成的是地圖任何任務都會運行。
我想出了一個解決方案,使用節點包uglify-js而不是grunt-contrib-uglify單獨縮小生成的文件。
- 添加醜化-JS你的package.json
- 添加下面的例子之一,你Grunfile(只需更換「您的文件HERE」通過適當的水珠(S)如果你使用實例1)。
- 如果您需要更改縮小文件目標或擴展名,請改爲使用示例2。它使用帶回調的grunt.file.recurse,它爲您提供每個文件的根目錄,子目錄和文件名(建立自定義目標路徑比較容易)。將「FOLDER」替換爲您要掃描的目錄,然後構建您自己的「CUSTOM PATH HERE」。
例1:用grunt.file。擴大
grunt.registerTask('uglifyFiles', 'Uglifies files', function() {
var jsp = require("uglify-js").parser,
pro = require("uglify-js").uglify,
count = 0;
grunt.file.expand(['YOUR FILES HERE']).forEach(function (abspath) {
// Exclude already minified files (with extension .min.js)
if (!abspath.match(/\.min\.js$/i)) {
// Get Abstract Syntax Tree
var ast = jsp.parse(grunt.file.read(abspath));
// If mangling
// ast = pro.ast_mangle(ast);
// If squeezing
ast = pro.ast_squeeze(ast);
// Write new file
grunt.file.write(abspath.replace(/\.js$/i, '.min.js'), pro.gen_code(ast));
count += 1;
}
});
grunt.log.oklns("Successfully uglified " + count + " files");
});
例2:隨着grunt.file.recurse
grunt.registerTask('uglifyFiles', 'Uglifies files', function() {
var jsp = require("uglify-js").parser,
pro = require("uglify-js").uglify,
count = 0;
grunt.file.recurse('FOLDER', function callback(abspath, rootdir, subdir, filename) {
// Exclude already minified files (with extension .min.js)
if (!abspath.match(/\.min\.js$/i)) {
// Get Abstract Syntax Tree
var ast = jsp.parse(grunt.file.read(abspath));
// If mangling
// ast = pro.ast_mangle(ast);
// If squeezing
ast = pro.ast_squeeze(ast);
// Write new file, using abspath or rootdir, subdir and filename
grunt.file.write('CUSTOM PATH HERE', pro.gen_code(ast));
count += 1;
}
});
grunt.log.oklns("Successfully uglified " + count + " files");
});
我會推薦[源地圖](http://www.html5rocks.com/en/tut orials/developertools/sourcemaps /) – Ismail