| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115 |
- const es = require('event-stream');
- const gulp = require('gulp');
- const concat = require('gulp-concat');
- const connect = require('gulp-connect');
- const templateCache = require('gulp-angular-templatecache');
- const ngAnnotate = require('gulp-ng-annotate');
- const uglify = require('gulp-uglify');
- const fs = require('fs');
- const _ = require('lodash');
- const babel = require('gulp-babel');
- const clean = require('gulp-clean')
- const scripts = require('./app.scripts.json');
- const source = {
- js: {
- main: 'app/main.js',
- src: [
- // application config
- 'app.config.js',
- // application bootstrap file
- 'app/main.js',
- // main module
- 'app/app.js',
- // module files
- 'app/**/module.js',
- // other js files [controllers, services, etc.]
- 'app/**/!(module)*.js'
- ],
- tpl: 'app/**/*.tpl.html'
- }
- };
- const destinations = {
- js: 'build'
- };
- // 清理目标目录
- gulp.task('clean', function () {
- gulp.src([destinations.js])
- .pipe(clean())
- })
- gulp.task('build', function () {
- return es.merge(gulp.src(source.js.src), getTemplateStream())
- .pipe(ngAnnotate())
- .pipe(babel())
- .pipe(uglify())
- .pipe(concat('app.js'))
- .pipe(gulp.dest(destinations.js));
- })
- // 这里功能好像跟bulid重合了
- function jsmin() {
- return es.merge(gulp.src(source.js.src), getTemplateStream())
- .pipe(uglify())
- .pipe(concat('app.js'))
- .pipe(gulp.dest(destinations.js));
- }
- gulp.task('watch', function () {
- gulp.watch('app/**/*.*').on('change', function (path, stats) {
- console.log('File' + path + "was changed")
- // 如果要实时打包,可以在这里创建任务
- // gulp.task('build')
- }).on('unlink', function (path) {
- console.log('File ' + path + ' was removed')
- });
- });
- gulp.task('connect', function () {
- connect.server({
- // livereload:true,//自动更新
- port: 8888
- });
- });
- gulp.task('vendor', function () {
- _.forIn(scripts.chunks, function (chunkScripts, chunkName) {
- const paths = [];
- chunkScripts.forEach(function (script) {
- const scriptFileName = scripts.paths[script];
- if (!fs.existsSync(__dirname + '/' + scriptFileName)) {
- throw console.error('Required path doesn\'t exist: ' + __dirname + '/' + scriptFileName, script)
- }
- paths.push(scriptFileName);
- });
- gulp.src(paths)
- .pipe(concat(chunkName + '.js'))
- //.on('error', swallowError)
- .pipe(gulp.dest(destinations.js))
- })
- })
- // 添加默认任务 运行gulp即可实现打包
- gulp.task('prod', ['vendor', 'build'])
- gulp.task('dev', ['vendor', 'build'])
- gulp.task('test', ['build', 'watch', 'connect'])
- gulp.task('default', ['dev'])
- const swallowError = function (error) {
- console.log(error.toString());
- this.emit('end')
- };
- const getTemplateStream = function () {
- return gulp.src(source.js.tpl)
- .pipe(templateCache({
- root: 'app/',
- module: 'app'
- }))
- };
|