gulp 自动ftp至服务器时,处理开发 测试服务器地址问题
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();
});
};
gulp 自动ftp至服务器时,处理开发 测试服务器地址问题的更多相关文章
- 【解决】WordPress FTP连接服务器时出错,请检查设置,WordPress需要访问您网页服务器的权限
		刚装好wordpress,发现后台预装了两个插件,想删掉,结果要登录FTP,死活登不上去,提示"连接服务器时出错,请检查设置,WordPress需要访问您网页服务器的权限",网上也 ... 
- cookie是指web浏览器存储的少量数据,该数据会在每次请求一个相关的URL时自动传到服务器中(转)
		基本概念:cookie是指web浏览器存储的少量数据,该数据会在每次请求一个相关的URL时自动传到服务器中. 以博客园为例,我们看看cookie有哪些属性: 1.Name:cookie的名称: 2.V ... 
- Mac下ssh连接远程服务器时自动断开问题
		在mac下使用securecrt通过ssh连接远程服务器时,总会一段时间没有动作后,ssh被自动断开.在windows下用xmanager貌似没有遇到过这个问题. 在网上找了解决方法如下: 客户端配置 ... 
- Win7 自带FTP将文件复制到FTP服务器时发生错误。
		错误截图: 错误信息: 将文件复制到FTP服务器时发生错误.请检查是否有权限将文件放到该服务器上. 详细信息: 200 Type set to I. 200 PORT commad successfu ... 
- 利用gulp,当引入文件改动时,版本号自动更新~
		gulp自动更新版本号 安装依赖 yarn add gulp-rev yarn add gulp-rev-collector 本次依赖的版本号为: "gulp": "^3 ... 
- Delphi XE8中开发DataSnap程序常见问题和解决方法 (三)用TClientDataSet的“ProviderName”属性连接服务器时,无法找到服务器端的“DatasetProvier”
		当我们在客户端用TClientDataSet的“ProviderName”属性连接服务器时,无法找到服务器端的“DatasetProvier”!! 问题原因:服务器端对提供服务的控件所属单元选择错误. ... 
- 关于node.js和npm,cnpm的安装记录以及gulp自动构建工具的使用
		关于node.js和npm,cnpm的安装记录以及gulp自动构建工具的使用 工作环境:window下 在一切的最开始,安装node.js (中文站,更新比较慢http://nodejs.cn/) ... 
- Gulp自动构建Web前端程序
		这两天在一个朋友在项目上碰到了一个这样的问题,在运营过程中,用户在浏览器上对某个表单进行数据提交时,需要引入新的平台接口数据的业务,通过评估,开发团队马上修改了相关后台代码和部分的前端脚本代码,通过简 ... 
- Serv-U FTP版本控制服务器 - 目录规范
		背景 公司要组建一个版本控制服务器,选定了serv-u,初始目的是应用于war级的一些标准组件的版本控制/测试交付/统一对外发布渠道. 项目过程图: 如果不使用版本控制会出现什么问题? War标准组件 ... 
随机推荐
- 痞子衡嵌入式:飞思卡尔i.MX RT系列MCU启动那些事(4)- Flashloader初体验(blhost)
			大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是飞思卡尔i.MX RT系列MCU的Flashloader. 在上一篇文章 Serial Downloader模式(sdphost, mf ... 
- 记一个常见的ms sql server中取第N条记录的方法
			前言 好好学习,天天向上. 正文 好像也是一个不难的问题,刚视频里看到的,就记一下吧. 下面是表中原始的数据结构,做了一个倒叙排序: select * from Employee order by S ... 
- 【憩园】C#并发编程之概述
			写在前面 并发编程一直都存在,只不过过去的很长时间里,比较难以实现,随着互联网的发展,人口红利的释放,更加友好的支持并发编程已经成了主流编程语言的标配,而对于软件开发人员来说,没有玩过并发编程都会有点 ... 
- 用TensorFlow教你手写字识别
			博主原文链接:用TensorFlow教你做手写字识别(准确率94.09%) 如需转载,请备注出处及链接,谢谢. 2012 年,Alex Krizhevsky, Geoff Hinton, and Il ... 
- 搞懂Linux下的几种文件类型
			在Linux系统下,有七类文件类型: 普通文件(-) 目录(d) 软链接(字符链接L) 套接字文件(S) 字符设备(S) 块设备(B) 管道文件(命名管道P) 普通文件.目录.软链接无需多解释. 管道 ... 
- Spring Cloud Alibaba基础教程:Nacos配置的多环境管理
			前情回顾: <Spring Cloud Alibaba基础教程:使用Nacos实现服务注册与发现> <Spring Cloud Alibaba基础教程:支持的几种服务消费方式> ... 
- 第19章 定义资源 - Identity Server 4 中文文档(v1.0.0)
			您通常在系统中定义的第一件事是您要保护的资源.这可能是您的用户的身份信息,如个人资料数据或电子邮件地址,或访问API. 注意 您可以使用C#对象模型定义资源 - 或从数据存储加载它们.IResourc ... 
- Asp.net的DataGrid实现列冻结(C#)
			# Asp.net的DataGrid实现列冻结(C#) 一.写在前面 列冻结即在拖动横向滚动条时,冻结的列会随着滚动条移动,使得该列不会因为拖动滚动条而被隐藏,呈现出仿佛冻结的效果.列冻结与表头冻结是 ... 
- WPF 可触摸移动的ScrollViewer控件
			ListBox支持触摸滑动,而ScrollViewer默认不支持.需要设置PanningMode属性,如果不设置PanningMode,如何自定义触摸滑动? ScrollViewer如需要添加上下/左 ... 
- c# API接收Base64转图片
			/// <summary> /// API接收Base64转图片 /// </summary> /// <param name="Img">图片 ... 
