gulp build
生活随笔
收集整理的這篇文章主要介紹了
gulp build
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
gulp打包腳本 ?
var gulp = require('gulp'); var gutil = require('gulp-util'); var chalk = require('chalk'); var fs = require('fs'); var _ = require('underscore'); var path = require('path'); var amdOptimize = require("amd-optimize"); var concat = require('gulp-concat'); var rimraf = require('gulp-rimraf'); var uglify = require('gulp-uglify'); var through2 = require("through2"); var ejs = require("gulp-ejs"); var less = require('gulp-less'); var minifyCSS = require('gulp-minify-css'); var runSequence = require('run-sequence'); // var imagemin = require('gulp-imagemin'); var zip = require('gulp-zip'); var shell = require('child_process'); var pkg = require('./package.json'); var merge = require("merge-stream"); var BUILD_TIMESTAMP = gutil.date(new Date(), "yyyymmddHHMMss"); var Utils = require("./gulputil/utils"); var htmlmin = require('gulp-htmlmin'); var Config = require("./gulputil/gulp.config")(); //獲取時間戳 pkg.build = BUILD_TIMESTAMP; // 設置默認工作目錄 process.chdir(Config.workDir);// 獲取管道env參數(shù) var argv = process.argv.slice(2); //檢查環(huán)境變量參數(shù) var env = Config.checkEnv(argv); //設置根目錄 var CONTEXT_PATH = Config.CONTEXT_PATH; //設置環(huán)境變量 var nativeApi = Config.nativeApi;var handleEnv = Config.handleEnv();/** 清空目標工程目錄*/ gulp.task('clean', function() {return gulp.src(Config.clean_src, {read: false}).pipe(rimraf({force: true})); });/** 拷貝文件到目標工程目錄*/ gulp.task('copy', function() {return gulp.src(Config.copy_src).pipe(handleEnv()).pipe(gulp.dest(Config.dest)); });/** 拷貝源文件文件到目標工程目錄*/ gulp.task('source', function() {return gulp.src(Config.source_src).pipe(gulp.dest(Config.source_dest)); }); /** 編譯ejs頁面*/ gulp.task("ejs", function() {return gulp.src(Config.ejs_src).pipe(ejs({ctx: CONTEXT_PATH,_build: {pkg: pkg,version: pkg.version,ts: BUILD_TIMESTAMP,env: env,nativeApi: nativeApi},Utils: new Utils(env),_: _,data: {},delimiter: "@"}, {root: __dirname + "/templates"})).pipe(htmlmin({collapseWhitespace: true})).pipe(gulp.dest(Config.ejs_dest)); })/** 編譯less*/ gulp.task('less', function() {return gulp.src(Config.less_src).pipe(less({Config: [path.join(__dirname, 'less', 'includes')]})).pipe(minifyCSS()).pipe(gulp.dest(Config.less_dest)); });/** 編譯壓縮css*/ gulp.task('minifycss', function() {return gulp.src(Config.minifycss_src).pipe(minifyCSS()).pipe(gulp.dest(Config.minifycss_dest)); });// /* // * 圖片壓縮 // */ // gulp.task("imagemin",function(){ // return gulp.src(Config.src+'/images/*') // .pipe(imagemin({ // progressive: true, // optimizationLevel:3, // svgoPlugins: [{removeViewBox: false}] // })) // .pipe(gulp.dest(Config.dest+'/images')); // })/** 編譯壓縮js*/ gulp.task('uglifyjs', function() {return gulp.src(Config.uglifyjs_src).pipe(handleEnv()).pipe(uglify({// output: {// max_line_len: 120// }}).on("error", gutil.log)).pipe(gulp.dest(Config.uglifyjs_dest)); }); // /* // * 編譯壓縮js // */ // gulp.task('concat_modules', function() { // var files = fs.readdirSync(Config.concat_modules_src); // var dirs = []; // var sequence = []; // _.each(files, function(fn) { // var fname = Config.concat_modules_src + "/"+fn; // var stat = fs.lstatSync(fname); // if (stat.isDirectory() == true) { // dirs.push(fname) // } // sequence.push( // gulp.src(fname+"/**/*.js") // .pipe(concat("main.js")) // .pipe(gulp.dest(Config.concat_modules_dest+"/"+fn)) // ) // }) // return merge.apply(this,sequence); // // return gulp.src(Config.uglifyjs_src) // // .pipe(concat({ // // output: { // // max_line_len: 120 // // } // // }).on("error", gutil.log)) // // .pipe(gulp.dest(Config.uglifyjs_dest)); // });/** require js 優(yōu)化*/ gulp.task("js_optimize", function() {var sequence = [];sequence.push(// 優(yōu)化commongulp.src(Config.src + "/js/**/*.js").pipe(amdOptimize("C", {configFile: Config.src + "/lib/require-config.js",paths: Config.exclude})).pipe(handleEnv())// 合并.pipe(concat("common.js"))// .pipe(uglify().on("error", gutil.log))// 輸出.pipe(gulp.dest(Config.dest + "/js/common")));var files = fs.readdirSync(Config.concat_modules_src);var dirs = [];var sequence = [];_.each(files, function(fn) {var fname = Config.concat_modules_src + "/" + fn;var stat = fs.lstatSync(fname);if (stat.isDirectory() == true) {if (fs.existsSync(Config.src + "/modules/" + fn + "/index.js")) {sequence.push(// 優(yōu)化commongulp.src(Config.src + "/modules/**/*.js").pipe(amdOptimize("modules/" + fn + "/index", {configFile: Config.src + "/lib/require-config.js",paths: Config.exclude})).pipe(handleEnv())// 合并.pipe(concat("index.js"))// .pipe(uglify().on("error", gutil.log))// 輸出.pipe(gulp.dest(Config.concat_modules_dest + "/" + fn)))}}})return merge.apply(this, sequence); });/** 打包zip*/ gulp.task('archive', function() {return gulp.src(Config.archive_src).pipe(zip(pkg.name + "_v_" + pkg.version.replace(/\./g, "_") + "_" + env.toLowerCase() + "_" + BUILD_TIMESTAMP + '.zip')).pipe(gulp.dest(Config.output)); });// gulp.task('archive', function () { // return gulp.src('src/*') // .pipe(zip('archive.zip')) // .pipe(gulp.dest('dist')); // });/** 部署到測試環(huán)境*/ gulp.task('deploy', function() { });gulp.task('clean_patch', function() {return gulp.src(Config.clean_patch, { read: false }).pipe(rimraf({ force: true })); });/* * 拷貝文件到目標工程目錄 */ gulp.task('copy_patch', function() {var filelist = fs.readFileSync("../patchlist.txt","UTF-8");filelist = filelist.replace(/\r/g,"");var list = filelist.split("\n");var rs = [];var obj = {};_.each(list,function(item){if(/^modules/.test(item)){var items = item.split("/");item = [items[0],items[1],"**/*"].join("/");}obj[item]=true;})for(var key in obj){console.log(key);rs.push(key);}rs.push("js/version.js");return gulp.src(rs,{cwd:Config.dest,base:Config.dest}).pipe(gulp.dest(Config.patch)); });/* * 開始構建 */ gulp.task('patch', function (callback) {runSequence("clean_patch","copy_patch",function (error) {if (error) {console.log(error.message);} else {console.log('RELEASE FINISHED SUCCESSFULLY');}callback(error);}); });/** 清空output目錄*/ gulp.task('clean_output', function() {return gulp.src(Config.output, {read: false}).pipe(rimraf({force: true})); });/** 把dist拷貝到output目錄下*/ gulp.task('copy_output', function() {return gulp.src(Config.dest+"/**/*",{cwd:Config.dest,base:Config.dest}).pipe(gulp.dest(Config.output+"/"+env.toLowerCase())); });/** 打包zip*/ gulp.task('archive_output', function() {return gulp.src(Config.output+"/**/*").pipe(zip('output.zip')).pipe(gulp.dest(Config.output)); });/** 開始構建*/ gulp.task('build', function(callback) {runSequence("clean",'less',"copy",'ejs','source','js_optimize',//這個運行時需要10幾分鐘,暫時注釋掉'uglifyjs',// 'minifycss',// 'archive',function(error) {if (error) {console.log(error.message);} else {console.log('RELEASE FINISHED SUCCESSFULLY');}callback(error);}); });/** 監(jiān)聽less */ gulp.task('watchless', function() {return gulp.watch(Config.src + "/less/**/*.less",function(event){console.log(event.path);gulp.start(["less"]);}); });/** 監(jiān)聽js */ gulp.task("watchjs",function(){return gulp.watch(Config.src + "/**/*.js",function(event){console.log(event.path);gulp.start(["js_optimize","uglifyjs"]);}); });/** 監(jiān)聽ejs */ gulp.task("watchejs",function(){return gulp.watch(Config.templates + "/**/*.ejs",function(event){console.log(event.path);gulp.start(["ejs"]);}); }); /* * watch監(jiān)聽 js javascript ejs */ gulp.task('watch', function (callback){runSequence("watchless","watchjs","watchejs",function(error) {if (error) {console.log(error.message);} else {console.log('RELEASE FINISHED SUCCESSFULLY');}callback(error);}); }); /* * 編譯build,然后watch */ gulp.task('default', function (callback){runSequence("build","watch",function(error) {if (error) {console.log(error.message);} else {console.log('RELEASE FINISHED SUCCESSFULLY');}callback(error);}); });?
轉載于:https://www.cnblogs.com/mjian/p/9250144.html
總結
以上是生活随笔為你收集整理的gulp build的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 详解Paint的各种set方法
- 下一篇: 解决MWPhotoBrowser中的SD