如何uglify一个文件夹中的多个.js文件并输出到不同的文件夹?
How to uglify multiple .js files in a folder and output them to a different folder?
我是 g运行t 的新手,我不知道在使用插件时如何定义路径 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
这是我的 g运行t 任务 :
// 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;
}
}]
}
}
当我 运行 g运行t 时,它会在 public/js
中创建文件并覆盖现有文件。我不明白为什么。
我也试过这个:
expand: true,
src: 'js/*.js',
dest: 'build/',
cwd: 'public/',
现在它会在根目录下创建一个新文件夹 js
,其中包含所有文件。
我想压缩 public/js/
中的每个 .js
文件,然后将它们放入 public/build/
我显然迷路了,你能帮帮我吗?
为满足您的要求,当building the files object dynamically您需要利用;
cwd
选项 - 描述如下:
cwd
All src
matches are relative to (but don't include) this path.
rename
函数,描述为:
rename
Embeds a customized function, which returns a string containing the new destination and filename. This function is called for each matched src
file (after extension renaming and flattening).
Grunt 文件:
以下配置将达到您想要的结果。
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']);
};
我是 g运行t 的新手,我不知道在使用插件时如何定义路径 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
这是我的 g运行t 任务 :
// 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;
}
}]
}
}
当我 运行 g运行t 时,它会在 public/js
中创建文件并覆盖现有文件。我不明白为什么。
我也试过这个:
expand: true,
src: 'js/*.js',
dest: 'build/',
cwd: 'public/',
现在它会在根目录下创建一个新文件夹 js
,其中包含所有文件。
我想压缩 public/js/
中的每个 .js
文件,然后将它们放入 public/build/
我显然迷路了,你能帮帮我吗?
为满足您的要求,当building the files object dynamically您需要利用;
cwd
选项 - 描述如下:cwd
Allsrc
matches are relative to (but don't include) this path.
rename
函数,描述为:rename
Embeds a customized function, which returns a string containing the new destination and filename. This function is called for each matchedsrc
file (after extension renaming and flattening).
Grunt 文件:
以下配置将达到您想要的结果。
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']);
};