var gulp=require('gulp'),
babel = require('gulp-babel'),
gulpSequence = require('gulp-sequence'),
htmlmin = require('gulp-htmlmin'),
sftp= require('gulp-sftp'),
concat=require('gulp-concat'),//文件合并
uglify=require('gulp-uglify'),//js压缩
minifyCss=require('gulp-minify-css'),//css压缩
rev=require('gulp-rev'),//对文件名加MD5后缀
clean=require('gulp-clean'),//清理
revCollector=require('gulp-rev-collector');//路径替换
var myConfig = require('./my-config.js'); gulp.task('mini-rev',function(){
return gulp.src(['./src/**/*.min.js','./src/**/*.min.css'])
.pipe(rev())
.pipe(gulp.dest('./dist/gulp_view'))
.pipe(rev.manifest())
.pipe(gulp.dest('./dist/gulp_rev/view-min'));
}); //css处理任务
gulp.task('mini-css-rev',function(){
return gulp.src(['./src/**/*.css','!./src/**/*.min.css'])
.pipe(minifyCss())
.pipe(rev())
.pipe(gulp.dest('./dist/gulp_view'))
.pipe(rev.manifest())
.pipe(gulp.dest('./dist/gulp_rev/view-css')); });
//js处理任务
gulp.task('mini-js-rev',function(){
return gulp.src(['./src/**/*.js','!./src/**/*.min.js'])
.pipe(myConfig())//核心配置 替换环境变量
.pipe(babel({ "presets": ["env"]} ))
.pipe(uglify({ mangle: false}))//mangle: true,//类型:Boolean 默认:true 是否修改变量名
.pipe(rev())
.pipe(gulp.dest('./dist/gulp_view/'))
.pipe(rev.manifest())
.pipe(gulp.dest('./dist/gulp_rev/view-js')); }); //路径替换任务
gulp.task('rev-c',function(){
var options = {
removeComments: true,//清除HTML注释
collapseWhitespace: true,//压缩HTML
removeEmptyAttributes: true,//删除所有空格作属性值 <input id="" /> ==> <input />
removeScriptTypeAttributes: true,//删除<script>的type="text/javascript"
removeStyleLinkTypeAttributes: true,//删除<style>和<link>的type="text/css"
minifyJS: true,//压缩页面JS
minifyCSS: true//压缩页面CSS
};
return gulp.src(['./dist/gulp_rev/**/*json','./src/**/*.html'])
.pipe( revCollector() )
.pipe(htmlmin(options))
.pipe(gulp.dest('./dist/gulp_view'));
}); //清理文件
gulp.task('clean', function() {
return gulp.src(['./dist/gulp_view','./dist/gulp_rev'], {read: false}) .pipe(clean());
});
gulp.task('cp', function() {
return gulp.src(['./src/**','!**/*.html','!**/*.htm','!**/*.css','!**/*.js'])
.pipe(gulp.dest('./dist/gulp_view'));
}); gulp.task('test', function() {
console.log('开始替换 配置');
console.log('npm_config_argv==',process.env.npm_config_argv);
console.log('npm_lifecycle_event==',process.env.npm_lifecycle_event);
console.log('npm_lifecycle_script==',process.env.npm_lifecycle_script);
}); gulp.task('sftp_dev', function () {
return gulp.src('./dist/gulp_view/**')
.pipe(sftp({
host: '192.168.10.132',
user: 'root',
port: '22',
pass:'2016@pflm',
remotePath: '/home/data/rights/client'
}));
});
gulp.task('sftp_test', function () {
return gulp.src('./dist/gulp_view/**')
.pipe(sftp({
host: '192.168.10.133',
user: 'root',
port: '22',
pass:'2016@pflm',
remotePath: '/home/data/rights/client'
}));
}); gulp.task('default',gulpSequence('clean',['cp','mini-rev', 'mini-css-rev','mini-js-rev'],'rev-c'));
gulp.task('dev',gulpSequence('clean',['cp','mini-rev', 'mini-css-rev','mini-js-rev'],'rev-c','sftp_dev'));
gulp.task('test',gulpSequence('clean',['cp','mini-rev', 'mini-css-rev','mini-js-rev'],'rev-c','sftp_test'));

gulp 自定义插件

'use strict';
let through = require('through2'); module.exports = function(){
return through.obj(function(file, encoding, callback) {
if(file.path.indexOf('common.js')>-1){
var scripts=process.env.npm_lifecycle_event;
console.log('追加变量 文件路径=',file.path);
console.log('package.json scripts ==',scripts);
var bool=false,text='';
switch(scripts){
case '本机': break;
case 'ftp开发环境':text=';imgPath = "http://192.168.10.132";_path="http://192.168.10.132/api"';bool=true;break;
case 'ftp133测试环境':text=';imgPath="http://aa-test.aaa.cn";_path="http://aa-test.aaa.cn/api"';bool=true;break;
default: break;
}
if(bool){//追加内容
if (file.isNull()||file.isStream()) {
this.emit('error', new PluginError(PLUGIN_NAME, 'Streams are not supported!'));
return callback();
}
let content = file.contents.toString();
content+=text;
file.contents = new Buffer(content);
}
console.log('追加变量 bool='+bool+',text='+text);
}
this.push(file);// 确保文件进入下一个 gulp 插件
callback();
});
};

最新文章

  1. 解决java.net.MalformedURLException: unknown protocol: c问题
  2. HTML学习笔记——CSS初涉
  3. 基于51单片机+DAC0832的信号发生器
  4. easyloader.js源代码分析
  5. P4factory 运行结果展示 basic_routing 以及 ./run_all_tests 的运行结果
  6. App Previews操作经验
  7. LinearLayout按下(pressed)或获取焦点(focused)时背景设置不同颜色或图片
  8. How to Customize Server Header using NginX headers-more module
  9. NUll在oracle与sqlserver中使用相同与区别
  10. 《第一行代码》学习笔记6-活动Activity(4)
  11. NSIS脚本根据操作系统版本动态决定默认安装目录
  12. collection 模块
  13. Redis学习——Redis持久化之RDB备份方式保存数据
  14. Jenkins hash
  15. Hadoop系列009-NameNode工作机制
  16. Python高级笔记(二) -- 深拷贝和浅拷贝
  17. Vue.js 动画
  18. JAVA监听器Listener
  19. Ex 7_17 考虑如下的网络(其中数字为对应边的容量)...第十三次作业
  20. 湖南大学第十四届ACM程序设计新生杯(重现赛)

热门文章

  1. 分析core,是从案发现场,推导案发经过
  2. 深度学习入门实战(一):像Prisma一样算法生成梵高风格画像
  3. 线程的私有领地 ThreadLocal
  4. 流式大数据计算实践(3)----高可用的Hadoop集群
  5. [总结] NOIP 前的考试记录
  6. 详解什么是平衡二叉树(AVL)(修订补充版)
  7. ASP.NET MVC Session 过期验证跳转至登入页面
  8. springboot之配置文件
  9. checkbox在vue中的用法小结
  10. JS数组Sort方法的使用