未完待续.......
gulpfile.js
var gulp = require('gulp'),
bs = require('browser-sync').create(),
concat = require("gulp-concat"),
sourceMaps = require("gulp-sourcemaps"),
uglify = require("gulp-uglify"),
gIf = require("gulp-if");
var envir = {
production: false
};
var path = {
app: './_app/', //发版app文件夹
dev: './_develop/', //开发app文件夹
vend: './' //资源包文件夹
};
var app = {
js: path.app + 'js/',
css: path.app + 'css/',
view: path.app
};
var dev = {
js: path.dev + 'js/', //开发js文件夹
css: path.dev + 'css/', //开发css文件夹
view: path.dev + 'view/' //开发html文件夹
};
var vend = {
js: ''
};
var source = {
js: [
dev.js + 'app.init.js', //初始化js
dev.js + 'module/*.js', //路由配置js
dev.js + 'module/controllers/*.js', //controllers
dev.js + 'module/directives/*.js', //directives
dev.js + 'module/services/*.js', //services
dev.js + 'custom/**/*.js' //
],
css: [
dev.css + '**/*.{css,sass,less}'
],
templates: {
index: [dev.view + 'index.*'],
views: [dev.view + '**.*', '!' + dev.view + 'index.*'],
}
};
gulp.task('js', function () {
return gulp.src(source.js)
.pipe(gIf(!envir.production, sourceMaps.init({loadMaps: true})))
.pipe(concat("app.js"))
.pipe(uglify({
mangle: false,
compress: true,
preserveComments: ""//注释保留
}))
.pipe(gIf(!envir.production, sourceMaps.write()))
.pipe(gulp.dest('./_app/js/'));
});
gulp.task('css', function () {
return gulp.src('./_develop/css/**/*.css')
.pipe(gulp.dest('./_app/css/'))
});
gulp.task('html', function () {
return gulp.src(['./_develop/view/**/*.html'])//base folder 为view,默认两个星号前面的,可以定义{base:'foldername'}
.pipe(gulp.dest('./_app/'))
});
gulp.task('vendorbase', [], function () {
return gulp.src(require('./vendor.base.json'), {base: './bower_modules'})
.pipe(gulp.dest('./_app/vendor/'));
});
gulp.task('vendorms', [], function () {
return gulp.src(require('./vendor.ms.json'), {base: './vendor'})
.pipe(gulp.dest('./_app/vendor/'));
});
gulp.task('vendor', function () {
return gulp.src(require('./vendor.json'), {base: './bower_modules'})
.pipe(gulp.dest('./_app/vendor/'))
});
gulp.task('serve', ['vendorbase', 'vendorms', 'vendor', 'js', 'css', 'html'], function () {
bs.init({
server: {
baseDir: ['./_app/', './']
}
});
gulp.watch(source.templates, ['html', bs.reload]);
gulp.watch(source.js, ['js', bs.reload]);
gulp.watch(source.css, ['css', bs.reload]);
var watcher = [].concat(
source.templates,
source.js,
source.css
);
gulp.watch(watcher).on("change", function (e) {
console.log("File " + e.path + " was " + e.type + " , running tasks")
});
// gulp.watch(['./{vendor.base,vendor,vendorms}.json'],['vendorbase','vendor','vendorms',bs.reload]);
});
gulp.task("production", ["setProduction", "js"]); //生产版本
gulp.task("setProduction", function () {
envir.production = true;
});