如何在文件夹中uglify多个.js文件并将它们输出到另一个文件夹?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在文件夹中uglify多个.js文件并将它们输出到另一个文件夹?相关的知识,希望对你有一定的参考价值。
我是grunt的新手,在使用插件grunt-contrib-uglify-es
时我无法弄清楚如何定义路径。
这是我的文件夹结构:
.
├── controllers
├── models
├── public
│ ├── build
│ │ ├─ foo.min.js
│ │ └─ x.min.js
│ ├── css
│ ├── font
│ └── js
│ ├─ foo.js
│ └─ x.js
├── routes
├── tests
├── utils
└── views
这是我的艰巨任务:
// take all js file in public/js/ and put them in public/build/
uglify: {
options: {
mangle: false,
banner: '/*! <%= pkg.name %> <%= grunt.template.today("yyyy-mm-dd") %> */\n'
},
build: {
files: [{
expand: true,
src: 'public/js/*.js',
dest: 'public/build/',
rename: function (dst, src) {
console.log(dst);
console.log(src);
return src;
}
}]
}
}
当我运行grunt时,它会将文件创建到public/js
并覆盖现有文件。我不明白为什么。
我也试过这个:
expand: true,
src: 'js/*.js',
dest: 'build/',
cwd: 'public/',
现在它在根目录下创建了一个新的文件夹js
,其中包含所有文件。
我想压缩.js
中的每个public/js/
文件,然后将它们放入public/build/
我很丢失,你能帮帮我吗?
答案
为了满足您的要求,当您需要使用building the files object dynamically时;
cwd
选项 - 描述如下:cwd
所有src
比赛都相对于(但不包括)此路径。rename
函数,描述如下:rename
嵌入自定义函数,该函数返回包含新目标和文件名的字符串。为每个匹配的src
文件调用此函数(在扩展名重命名和展平后)。
步兵文件:
以下配置将满足您的期望结果。
module.exports = function (grunt) {
grunt.loadNpmTasks('grunt-contrib-uglify-es');
grunt.initConfig({
pkg: grunt.file.readJSON('package.json'),
uglify: {
options: {
mangle: false,
banner: '/*! <%= pkg.name %> <%= grunt.template.today("yyyy-mm-dd") %> */\n'
},
build: {
// Change your configuration to this...
files: [{
expand: true,
cwd: 'public/js',
src: '*.js',
dest: 'public/build/',
rename: function (dst, src) {
return dst + '/' + src.replace('.js', '.min.js');
}
}]
}
}
});
grunt.registerTask('default', ['uglify']);
};
以上是关于如何在文件夹中uglify多个.js文件并将它们输出到另一个文件夹?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用grunt-contrib-concat和grunt-contrib-uglify为每个单独的js文件创建源图?
CMake项目结构:如何正确地将库合并在一起并将它们包含在多个可执行文件中