Структура файла.
/app
/components
/core
/extensions
- array.js
- string.js
/services
- logger.js
/lib
- core.js
core.js
(function() {
'use strict';
angular.module('app.core',[]);
}());
Мне нужно перезаписать core.js на каждой сборке, скопировав на нее все другие 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
Iv'e попытался выполнить две задачи, которые я верил в то, что для этого не было, но не нашел способ настроить их для моих нужд.
1) у grunt-concat было 2 вопроса, первое, что оно добавляет содержимое с самого начала файла, а не конец файла, как я хотел. и он не отменяет существующий контент.
2) grunt-copy отменяет, но переопределяет весь файл.
То, что было предпринято, заключается в использовании функции процесса для копирования ворчания.
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.
}
}
}
Это также проблематично, так как я должен был бы сохранить текст, содержащий определение углового модуля в моем файле Grunt, и добавить его к первому содержимому, которое входит в мою функцию процесса, что-то вроде этого, которое кажется действительно запутанным.
process : function(content, srcpath){
if(isFirst) {
isFirst = false;
// here i will append the angular module deceleration.
}
return content;
}
Есть ли элегантный способ добиться того, что описал iv'e?
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'
}]
},
},
Должен дать вам то, что вы хотите