Gruntjs 使用grunt的concat/uglify js文件
我有以下文件夹结构Gruntjs 使用grunt的concat/uglify js文件,gruntjs,Gruntjs,我有以下文件夹结构 root src ui ui1 js ui.js page1 page.js page2 page.js ui2 js
root
src
ui
ui1
js
ui.js
page1
page.js
page2
page.js
ui2
js
ui.js
page1
page.js
page2
page.js
page3
page.js
css
js
ui
是否可以在此基础上运行grunt uglify以实现以下目的:将每个ui[x]文件夹中的所有js文件从root/src/连接到root/ui/文件夹,保持路径结构不变
我想以
root
src
ui
ui1
js
ui.js
page1
page.js
page2
page.js
ui2
js
ui.js
page1
page.js
page2
page.js
page3
page.js
css
js
ui
ui1
ui.min.js
ui2
ui.min.js
我的问题是ui[x]和page[x]文件夹将在以后添加,因此我需要将其动态化。
我能够实现的是,要么连接所有文件而不保留路径,要么保留路径,丑陋但不连接。感谢您的帮助
files: {
expand: true,
cwd: 'src/ui/',
src: '**/*',
dest: 'ui/'
}
解决您的问题的方法是实施。此函数的目的是在默认配置无法满足您的用例时,为您提供对src/dest映射的更好控制。重命名函数将为与src模式匹配的每个源文件调用,并允许您定义确定目标文件的逻辑 即使我们将多个源文件映射到单个目标文件,这也会起作用。文件说: 如果将多个匹配的src路径重命名为相同的目标,即如果将两个不同的文件重命名为同一文件,则每个输出都将添加到该文件的源数组中 我们的目标是从根/src/ui/目录开始,收集以.js结尾的每个文件路径,并为每个文件路径生成一个目标文件路径,即第一个目录名加上/ui.min.js。例如,ui1/js/ui.js将映射到ui1/ui.min.js,ui2/page3/page.js将映射到ui2/ui.min.js 逻辑建立后,重命名函数的实现就相当简单了。我们的GrunFile将如下所示:
module.exports = function (grunt) {
grunt.initConfig({
clean: {
dist: ['root/ui']
},
uglify: {
dist: {
files: [
{
expand: true,
cwd: 'root/src/ui/',
src: ['**/*.js'],
dest: 'root/ui/',
rename: function (dest, src) {
return dest + src.substring(0, src.indexOf('/') + 1) + 'ui.min.js';
}
}
]
}
}
});
grunt.loadNpmTasks('grunt-contrib-clean');
grunt.loadNpmTasks('grunt-contrib-uglify');
grunt.registerTask('default', ['clean', 'uglify']);
};
完美的解决方案,谢谢,不知道重命名功能,应该仔细阅读文档。您能解释一下clean任务吗?以前从未使用过它。@slash197:我正在使用grunt contrib clean任务在生成之前删除dist文件夹root/ui的内容。我这样做只是为了确保我们重新开始。如果要删除src/ui/ui2文件夹,这将确保根/ui/ui2被删除。