Это альтернативный подход (рядом с решением @jalonen), который может быть вам интересен, ЕСЛИ вы используете requirejs для модуляции вашего проекта, вы можете использовать requirejs оптимизатор для минимизации ваших модулей.
Прежде всего, вам нужно добавить в проект grunt-contrib-requirejs:
npm install grunt-contrib-requirejs --save-dev
Конфигурация Grunt:
requirejs: {
production:{
options:{
// don't include libaries when concatenating/minifying
paths:{
angular:'empty:',
jquery:'empty:'
},
baseUrl:'path/to/src/js',
dir:'path/to/target/js',
// keeps only the combined files
removeCombined:true,
modules:[
{name:'app', exclude: ['moduleA', 'moduleB']},
{name:'moduleA'},
{name:'moduleB'}
]
}
}
}
...
grunt.loadNpmTasks('grunt-contrib-copy');
Пояснение:
Допустим, у вас есть это дерево зависимостей (->
означает зависит от):
app -> moduleA -> moduleA1
-> moduleA2
app -> moduleB -> moduleB1
-> moduleB2
После минификации у вас будет три файла:
app
(уменьшенная версия приложения)
moduleA
(уменьшенная версия moduleA
, moduleA1
и moduleA2
)
moduleB
(уменьшенная версия moduleB
, moduleB1
и moduleB2
)
person
asgoth
schedule
18.03.2013