基本思想是
- 连接所有js文件(以正确的顺序排列,以便模块定义先于控制器/服务)
- 最小化是否用于生产
- 复制到固定路径
- 在您的html中包含此单个js文件
- 在开发过程中,让您的grunt / gulp脚本监视js文件中的更改,然后重新运行上述步骤,因此您不必手动运行grunt / gulp任务。
现在,如果您正在使用gulp,则通常按照以下步骤操作
gulp.task('process-js', function () {
return gulp.src(jsFiles, {base: './'})
.pipe(gulpif(isProd, concat('all.min.js'), concat('all.js')))
.pipe(gulpif(isProd, uglify({mangle: true, preserveComments: 'some'})))
.pipe(gulp.dest(deployFolder + '/static/js'))
});
其中jsFiles是包含您的角度应用js文件的文件/文件夹的数组
var jsFiles = [
'!static/js/**/*.js',
'!static/js/plugin/**/*.*',
'app/index/**/*module.js',
'app/index/**/*config.js',
'app/index/**/*ctrl.js'
];
注意:使用!
前缀以排除某些文件/文件夹。
isProd
只是一个标志,指示您是准备进行生产还是开发。
在开发期间,我还使用BrowserSync监视对js文件的任何更改,然后重新运行gulp任务以准备all.js
它还会自动刷新浏览器中的页面。
gulp.task('run', function () {
browserSync({
server: {
baseDir: deployFolder
},
open: true,
browser: ['google chrome'],
files: deployFolder + '/**/*',
watchOptions: {
debounceDelay: 2000
}
});
gulp.watch(jsFiles, ['process-js']);
});
gulp.task('default', function () {
runSequence(
'clean',
'run'
);
});