文件结构。
/app
/components
/core
/extensions
- array.js
- string.js
/services
- logger.js
/lib
- core.js
Core.js
(function() {
'use strict';
angular.module('app.core',[]);
}());
我需要的是通过将该文件夹中的所有其他js文件复制到每个构建上来覆盖core.js,同时保持模块减速的第一个原始内容。
这是Core.js想要的结果:
(function() {
'use strict';
angular.module('app.core',[]);
}());
// content of array.js
(function() {
'use strict';
var core = angular.module('app.core');
core.config( .....)
}());
// content of string.js
...
// content of logger.js
我曾尝试过2个咕噜咕噜的任务,我认为这些任务不是为了这个目的,而是找不到根据我的需要配置它们的方法。
1)grunt-concat有两个问题,第一个是它从文件的开头追加内容,而不是像我想要的那样追加文件的结尾。并且它不会覆盖现有内容。
2)grunt-copy会覆盖但会覆盖整个文件。
尝试使用过程函数进行grunt复制。
copy: {
src: ['app/components/core/{,*/}*.js'],
dest: 'app/components/core/lib/core.js',
options:{
process : function(content, srcpath){
return content; // do some manipulation on content here.
}
}
}
这也是有问题的,因为我必须在我的Gruntfile中保留包含角度模块定义的文本,并将其附加到进入我的过程函数的第一个内容中,这样的东西看起来非常混乱。
process : function(content, srcpath){
if(isFirst) {
isFirst = false;
// here i will append the angular module deceleration.
}
return content;
}
有没有一种优雅的方式来实现我所描述的?
答案 0 :(得分:1)
grunt-contrib-concat
正是您所需要的,只需执行以下操作:
core.js
重命名为_banner.js
(或您喜欢的任何内容) - 最好不要覆盖您的横幅文件设置concat
以便将_banner.js
与您的其他文件重新对齐,并将其另存为core.js
:
concat: {
core: {
files: [{
src: [
'app/components/core/_banner.js',
'app/components/core/extensions/*.js',
'app/components/core/services/*.js'
],
dest: 'app/components/core/lib/core.js'
}]
},
},
应该给你你想要的东西