我有一个可能包含许多模块的 Angular 项目。每个模块都有自己的目录,其中包含控制器、指令、服务等的子目录。像这样:
src
|-- js
|-- modules
|-- moduleOne
| module.js
|-- controllers
| listController.js
| detailController.js
|-- directives
| listItem.js
| summaryWidget.js
|-- filters
|-- services
| moduleService.js
我的构建基本上是从 src/ 捆绑和编译文件并放入 dev/,然后缩小 dev/ 中的文件并移至 prod/。在开发期间,服务器指向 dev/ 文件夹,而在生产中,服务器指向 prod/ 文件夹(这也是为什么文件以 .min.js 结尾的原因,即使它们只是被编译/合并)。这个过程运行良好。
目前,我的 concat 任务是获取 moduleOne/ 中的所有文件,并在我的 dev 目录中创建一个 moduleOne.js 文件。这是我想要发生的,但更动态:
concat: {
modules: {
files: {
"dev/js/modules/moduleOne.min.js": [
"src/js/modules/moduleOne/*.js",
"src/js/modules/moduleOne/**/*.js"
],
"dev/js/modules/moduleTwo.min.js": [
"src/js/modules/moduleTwo/*.js",
"src/js/modules/moduleTwo/**/*.js"
]
}
}
}
问题是我必须为每个模块都这样做,但我认为我不需要这样做。
我尝试执行以下操作,因为这是我想做的事情:
concat: {
modules: {
files: [{
expand: true,
cwd: "src/js/modules",
src: "**/*.js",
dest: "dev/js/modules",
ext: ".min.js"
}]
}
}
但结果是我所有的文件和目录结构都从 src/ 转移到了 dev/。我基本上是用concat来做copy的,没什么用。
我想做这样的事情:
concat: {
modules: {
files: [{
expand: true,
cwd: "src/js/modules",
src: "**/*.js",
dest: "dev/js/modules/<foldername>.min.js", <- how do I achieve this?
}]
}
}
我已经阅读了很多,但似乎我只能找到答案并且无法将这些概念放在一起。我发现很多只是将单个文件放入新目录中,并重命名。我希望多个文件将单个文件重新命名到新目录中。因为这就是我滚动的方式:)