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至服务器时,处理开发 测试服务器地址问题的更多相关文章

  1. 【解决】WordPress FTP连接服务器时出错,请检查设置,WordPress需要访问您网页服务器的权限

    刚装好wordpress,发现后台预装了两个插件,想删掉,结果要登录FTP,死活登不上去,提示"连接服务器时出错,请检查设置,WordPress需要访问您网页服务器的权限",网上也 ...

  2. cookie是指web浏览器存储的少量数据,该数据会在每次请求一个相关的URL时自动传到服务器中(转)

    基本概念:cookie是指web浏览器存储的少量数据,该数据会在每次请求一个相关的URL时自动传到服务器中. 以博客园为例,我们看看cookie有哪些属性: 1.Name:cookie的名称: 2.V ...

  3. Mac下ssh连接远程服务器时自动断开问题

    在mac下使用securecrt通过ssh连接远程服务器时,总会一段时间没有动作后,ssh被自动断开.在windows下用xmanager貌似没有遇到过这个问题. 在网上找了解决方法如下: 客户端配置 ...

  4. Win7 自带FTP将文件复制到FTP服务器时发生错误。

    错误截图: 错误信息: 将文件复制到FTP服务器时发生错误.请检查是否有权限将文件放到该服务器上. 详细信息: 200 Type set to I. 200 PORT commad successfu ...

  5. 利用gulp,当引入文件改动时,版本号自动更新~

    gulp自动更新版本号 安装依赖 yarn add gulp-rev yarn add gulp-rev-collector 本次依赖的版本号为: "gulp": "^3 ...

  6. Delphi XE8中开发DataSnap程序常见问题和解决方法 (三)用TClientDataSet的“ProviderName”属性连接服务器时,无法找到服务器端的“DatasetProvier”

    当我们在客户端用TClientDataSet的“ProviderName”属性连接服务器时,无法找到服务器端的“DatasetProvier”!! 问题原因:服务器端对提供服务的控件所属单元选择错误. ...

  7. 关于node.js和npm,cnpm的安装记录以及gulp自动构建工具的使用

    关于node.js和npm,cnpm的安装记录以及gulp自动构建工具的使用   工作环境:window下 在一切的最开始,安装node.js (中文站,更新比较慢http://nodejs.cn/) ...

  8. Gulp自动构建Web前端程序

    这两天在一个朋友在项目上碰到了一个这样的问题,在运营过程中,用户在浏览器上对某个表单进行数据提交时,需要引入新的平台接口数据的业务,通过评估,开发团队马上修改了相关后台代码和部分的前端脚本代码,通过简 ...

  9. Serv-U FTP版本控制服务器 - 目录规范

    背景 公司要组建一个版本控制服务器,选定了serv-u,初始目的是应用于war级的一些标准组件的版本控制/测试交付/统一对外发布渠道. 项目过程图: 如果不使用版本控制会出现什么问题? War标准组件 ...

随机推荐

  1. JDK源码分析(8)之 Reference 完全解读

    在阅读本文之前最好对 Reference 框架有一个整体的把握,可以参考我上一篇博客 Reference 框架概览 :本文主要讲了 Reference 的子类实现和应用(SoftReference,W ...

  2. [一]class 文件浅析 .class文件格式详解 字段方法属性常量池字段 class文件属性表 数据类型 数据结构

    前言概述  本文旨在讲解class文件的整体结构信息,阅读本文后应该可以完整的了解class文件的格式以及各个部分的逻辑组成含义   class文件包含了java虚拟机指令集 和  符号表   以及若 ...

  3. 聊聊数据库~3.SQL基础篇

    上篇回顾:聊聊数据库~SQL环境篇 扩展:为用户添加新数据库的权限 PS:先使用root创建数据库,然后再授权grant all privileges on 数据库.* to 用户名@"%& ...

  4. Shell编程(week4_day1)--技术流ken

    本节内容 1.shell简介 2. shell分类 3. 查看shell 4. 第一个shell脚本 5. shell编程常用命令   5.1 grep   5.2 cut   5.3 sort   ...

  5. 第49章 令牌端点(Token Endpoint) - Identity Server 4 中文文档(v1.0.0)

    令牌端点可用于以编程方式请求令牌.它支持password,authorization_code,client_credentials,refresh_token和urn:ietf:params:oau ...

  6. 【JVM】问题排查

    jetty的调用场景是:为了支持Servlet规范中的注解方式(使得不再需要在web.xml文件中进行Servlet的部署描述,简化开发流程),jetty在启动时会扫描class.lib包,将使用注解 ...

  7. 讲讲跳跃表(Skip Lists)

    跳跃表(Skip Lists)是一种有序的数据结构,它通过在每个节点中维持多个指向其他节点的指针,从而达到快速访问节点的目的.在大部分情况下,跳跃表的效率可以和平衡树相媲美,并且在实现上比平衡树要更为 ...

  8. C#实现完整的防盗自制监控系统

    在您的手机中通知您家中的入侵者,并拍摄他们的照片 介绍 在本文中,我将展示一些DIY东西​​,用于安装监控系统,检测家中的入侵者,拍摄照片并通过手机通知您,必要时可以打电话给警察并提供照片以便快速识别 ...

  9. QT之Http请求

    今天我们介绍一下QT的http请求,这里有post和get两种方式 一.post请求方式:参数分为网址和具体请求值两个部分,有时候还需要设置头信息,看具体情况定 void MainWindow::se ...

  10. jQuery遍历—each()方法遍历对象和数组

    打开控制台后可以看到以下输出: