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); }); });
相关推荐
Umi-OCR-main.zip
基于springboot+Web的毕业设计选题系统源码数据库文档.zip
基于springboot校外兼职教师考勤管理系统源码数据库文档.zip
58商铺全新UI试客试用平台网站源码
基于springboot大学生就业信息管理系统源码数据库文档.zip
基于SpringBoot的口腔诊所系统源码数据库文档.zip
数据存放网盘,txt文件内包含下载链接及提取码,永久有效。失效会第一时间进行补充。样例数据及详细介绍参见文章:https://blog.csdn.net/T0620514/article/details/143956923
3-240P2162218.zip
网络安全 基于Qt创建的Linux系统下的浏览器.zip
C++ 类和对象:多态-练习题目2(制作咖啡和茶叶)
基于springboot+J2EE在线项目管理与任务分配中的应用源码数据库文档.zip
简介本项目提供了一个在51单片机上运行的简单操作系统,旨在帮助学习者深入理解操作系统的基本原理和任务调度机制。该操作系统通过汇编和C语言编写,实现了任务调度、中断处理等核心功能,并提供了详细的源代码和注释,方便学习和实践。
本文将深度卷积神经网络(CNN)设计实现一个复杂结构的生成模型,旨在通过多阶段的编码器-解码器结构,能够有效地将灰度图像转换为彩色图像。最后,本文将实现一个简单的Web应用,用户可以通过上传灰度图像,应用会使用预训练的Caffe模型对其进行颜色化,并将结果返回给用户。 1.模型设计:模型由多个卷积层、ReLU激活函数和批归一化层组成,通过前向传播函数将输入的灰度图像(L通道)转换为彩色图像(ab通道)。如果指定了 pretrained=True,则会自动下载并加载预训练的模型权重。 2. 系统通过Flask框架提供了一个Web应用,用户可以上传灰度图像,系统会自动将其转换为彩色图像,并在网页上显示结果。整个过程包括文件验证、图像处理、颜色化预测和结果展示,具有较高的实用性和用户体验。
一个JAVA图形化的、联网的五子棋游戏.zip javaweb
KWDB 是一款面向 【AIoT 场景】的【分布式多模数据库】,支持在同一实例同时建立时序库和关系库并融合处理多模数据,具备千万级设备接入、百万级数据秒级写入、亿级数据秒级读取等时序数据高效处理能力,具有稳定安全、高可用、易运维等特点。
页面数量:7页 网页主题:网站模板、酒店网站模板、官方网站模板 网页页面:首页、关于我们、相关服务、服务详情、在线博客、博客详情、在线留言 页面实现元素:加载动画、滚动加载、主题切换、导航栏 、轮播图、图文列表、图片切换、 文字列表、 按钮悬停、图片悬停、表单 实现技术:HTML、CSS 、JQuery 源码样式及js文件均分开存放,所有内容仅供初学者学习参考
内容概要:本文档提供了详细的 Neo4j 安装与配置指南,涵盖 Windows、Linux 和 Mac 系统的安装步骤。具体包括下载、安装、启动服务、修改配置文件(如端口配置、远程访问和内存限制)、设置管理员密码以及基本的 Cypher 查询语言使用方法。同时,还提供了一些常见问题及其解决方案。 适合人群:数据库管理员、软件开发人员、系统管理员。 使用场景及目标:①帮助初学者快速掌握 Neo4j 的安装与配置;②适用于需要搭建和使用图数据库的项目;③为已有用户解决常见问题。 其他说明:本文档不仅包含了基础的安装和配置流程,还提供了实际操作中可能遇到的问题及其解决方法,有助于提高使用者的实际操作能力。
基于SpringBoot+Vue的软件产品展示销售系统源码数据库文档.zip
《书戴嵩画牛》教学课件.pptx
20届智能车 【项目资源】:包含前端、后端、移动开发、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源,毕业设计等各种技术项目的源码。包括C++、Java、python、web、C#、EDA等项目的源码。 【适用人群】:适用于希望学习不同技术领域的初学者或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。