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参数 var argv = process.argv.slice(2); //检查环境变量参数 var env = Config.checkEnv(argv); //设置根目录 var CONTEXT_PATH = Config.CONTEXT_PATH; //设置环境变量 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 优化 */ gulp.task("js_optimize", function() { var sequence = []; sequence.push( // 优化common gulp.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( // 优化common gulp.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')); // }); /* * 部署到测试环境 */ 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); }); }); /* * 监听less */ gulp.task('watchless', function() { return gulp.watch(Config.src + "/less/**/*.less",function(event){ console.log(event.path); gulp.start(["less"]); }); }); /* * 监听js */ gulp.task("watchjs",function(){ return gulp.watch(Config.src + "/**/*.js",function(event){ console.log(event.path); gulp.start(["js_optimize","uglifyjs"]); }); }); /* * 监听ejs */ gulp.task("watchejs",function(){ return gulp.watch(Config.templates + "/**/*.ejs",function(event){ console.log(event.path); gulp.start(["ejs"]); }); }); /* * watch监听 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); }); });
相关推荐
By the end of this book, you will be able to create your very own gulp build from scratch, create and maintain tasks and project builds, and automate your workflow with plugins and custom tasks. ...
我的gulp-git
demo_gulp_build 演示gulp构建 这是一个使用babel,react,less,以及其他一些废话的简单的gulp构建系统
大口构建 用于观察和处理 sass 和 javascript 的简单 gulp 构建脚本 使用: 确保你有一个包含所有依赖项的 package.json 运行: npm install 安装所有依赖项 利润
gulp build 或者 npm run build 后端启动: node server 数据库: 根据server/setting.js 的配置连上数据库 node manager.js 生成数据库 项目细节 后端使用工作时搭建的node服务器,基于koa内核,采用koa-...
前端开发人员构建过程,使用最新的工具gulp来让你启动并运行。可以使用它作为你自己构建过程的样板或教程。
使用说明:npm install// 安装依赖// 命令配置npm run clean === gulp clean // 清理文件夹npm run compile === gulp compile // 只操作得文件打包编译npm run build === gulp build // 执行...
Gulp-构建示例使用 gulp 构建的项目示例见 gulpfile.js
如果尚未安装gulp-cli项目,请使用npm install --save gulp-cli在本地npm install --save gulp-cli或使用npm install -g gulp-cli全局npm install -g gulp-cli 。 后者可能需要管理权限。 在文件(imageName,容器...
基本Gulp项目模板 在前端项目上开始工作的...$ gulp clean build/目录 $ gulp webserver gulp $ gulp webserver启动本地webserver进行livereload $ gulp build项目的完整构建 $ gulp watch运行webserver任务并跟踪更
gulp build --dev --main var args = require ( 'get-gulp-args' ) ( ) ; process . env . NODE_ENV = args [ 0 ] || 'dev' ; process . env . PROJECT = args [ 1 ] || 'main' ; 或者 gulp build --env dev --...
发展历程运行: gulp build --env=dev阶段运行: gulp build --env=stage生产运行: gulp build --env=prod服务器启动本地开发服务器。 此外,gulp将监视文件的任何更改,并在服务器运行时重新加载浏览器。
gulp入门套件 如果您想知道如何构建这种入门套件,可以观看我在使用该入门套件时...为了构建项目的生产版本,请从克隆的仓库的根目录运行gulp build 。 使用的npm软件包列表 吞咽 浏览器同步 口香糖 gulp-源地图 gulp-
利用franmwork7手机框架开发的一个demo
基于Gulpfile 任务 gulp :初始化监视更改和服务器(本地主机:3000) gulp --fy :使用浏览器模式初始化监视更改和服务器(localhost:3000) ...gulp build --fy --p :缩小文件并通过rsync部署(浏览器模式)
gulp build从源代码构建项目 Gulp任务列表 要在命令行gulp [task_name]运行单独的任务类型。 几乎所有任务都具有监视模式gulp [task_name]:watch ,但您无需直接使用它。 主要任务 任务名称 描述 default 将以开发...
运行gulp build --p创建生产版本任务gulp gulp build #Compilaçãonormal paraprodução gulp build --p #Compilaçãominificada paraprodução gulp gulp build --production #Compilaçãominificada ...
运行bower install以安装bower依赖项##运行在CLI中运行的应用程序gulp run将使您开始运行,并通过Internet连接将连接到聊天服务器##构建应用程序gulp build --{{platform}}例如gulp build --linux gulp build --win...
使用-d或--dest选项来自定义目标位置: gulp build --dest=/path/to/destgulp build -d=/path/to/dest使用-v或--version选项来自定义版本: gulp build --version=1.0.0gulp build -v=1.0.0要观看,请运行gulp ...
$ cd my-slush-wean && slush wean运行应用要运行该应用程序,请执行$ gulp run 为Mac运行构建应用程序$ gulp build --mac 要为Windows运行该应用程序$ gulp build --win 要为Linux构建应用程序,请运行$ gulp ...