1. var gulp=require('gulp'),
  2. babel = require('gulp-babel'),
  3. gulpSequence = require('gulp-sequence'),
  4. htmlmin = require('gulp-htmlmin'),
  5. sftp= require('gulp-sftp'),
  6. concat=require('gulp-concat'),//文件合并
  7. uglify=require('gulp-uglify'),//js压缩
  8. minifyCss=require('gulp-minify-css'),//css压缩
  9. rev=require('gulp-rev'),//对文件名加MD5后缀
  10. clean=require('gulp-clean'),//清理
  11. revCollector=require('gulp-rev-collector');//路径替换
  12. var myConfig = require('./my-config.js');
  13.  
  14. gulp.task('mini-rev',function(){
  15. return gulp.src(['./src/**/*.min.js','./src/**/*.min.css'])
  16. .pipe(rev())
  17. .pipe(gulp.dest('./dist/gulp_view'))
  18. .pipe(rev.manifest())
  19. .pipe(gulp.dest('./dist/gulp_rev/view-min'));
  20. });
  21.  
  22. //css处理任务
  23. gulp.task('mini-css-rev',function(){
  24. return gulp.src(['./src/**/*.css','!./src/**/*.min.css'])
  25. .pipe(minifyCss())
  26. .pipe(rev())
  27. .pipe(gulp.dest('./dist/gulp_view'))
  28. .pipe(rev.manifest())
  29. .pipe(gulp.dest('./dist/gulp_rev/view-css'));
  30.  
  31. });
  32. //js处理任务
  33. gulp.task('mini-js-rev',function(){
  34. return gulp.src(['./src/**/*.js','!./src/**/*.min.js'])
  35. .pipe(myConfig())//核心配置 替换环境变量
  36. .pipe(babel({ "presets": ["env"]} ))
  37. .pipe(uglify({ mangle: false}))//mangle: true,//类型:Boolean 默认:true 是否修改变量名
  38. .pipe(rev())
  39. .pipe(gulp.dest('./dist/gulp_view/'))
  40. .pipe(rev.manifest())
  41. .pipe(gulp.dest('./dist/gulp_rev/view-js'));
  42.  
  43. });
  44.  
  45. //路径替换任务
  46. gulp.task('rev-c',function(){
  47. var options = {
  48. removeComments: true,//清除HTML注释
  49. collapseWhitespace: true,//压缩HTML
  50. removeEmptyAttributes: true,//删除所有空格作属性值 <input id="" /> ==> <input />
  51. removeScriptTypeAttributes: true,//删除<script>的type="text/javascript"
  52. removeStyleLinkTypeAttributes: true,//删除<style>和<link>的type="text/css"
  53. minifyJS: true,//压缩页面JS
  54. minifyCSS: true//压缩页面CSS
  55. };
  56. return gulp.src(['./dist/gulp_rev/**/*json','./src/**/*.html'])
  57. .pipe( revCollector() )
  58. .pipe(htmlmin(options))
  59. .pipe(gulp.dest('./dist/gulp_view'));
  60. });
  61.  
  62. //清理文件
  63. gulp.task('clean', function() {
  64. return gulp.src(['./dist/gulp_view','./dist/gulp_rev'], {read: false}) .pipe(clean());
  65. });
  66. gulp.task('cp', function() {
  67. return gulp.src(['./src/**','!**/*.html','!**/*.htm','!**/*.css','!**/*.js'])
  68. .pipe(gulp.dest('./dist/gulp_view'));
  69. });
  70.  
  71. gulp.task('test', function() {
  72. console.log('开始替换 配置');
  73. console.log('npm_config_argv==',process.env.npm_config_argv);
  74. console.log('npm_lifecycle_event==',process.env.npm_lifecycle_event);
  75. console.log('npm_lifecycle_script==',process.env.npm_lifecycle_script);
  76. });
  77.  
  78. gulp.task('sftp_dev', function () {
  79. return gulp.src('./dist/gulp_view/**')
  80. .pipe(sftp({
  81. host: '192.168.10.132',
  82. user: 'root',
  83. port: '22',
  84. pass:'2016@pflm',
  85. remotePath: '/home/data/rights/client'
  86. }));
  87. });
  88. gulp.task('sftp_test', function () {
  89. return gulp.src('./dist/gulp_view/**')
  90. .pipe(sftp({
  91. host: '192.168.10.133',
  92. user: 'root',
  93. port: '22',
  94. pass:'2016@pflm',
  95. remotePath: '/home/data/rights/client'
  96. }));
  97. });
  98.  
  99. gulp.task('default',gulpSequence('clean',['cp','mini-rev', 'mini-css-rev','mini-js-rev'],'rev-c'));
  100. gulp.task('dev',gulpSequence('clean',['cp','mini-rev', 'mini-css-rev','mini-js-rev'],'rev-c','sftp_dev'));
  101. gulp.task('test',gulpSequence('clean',['cp','mini-rev', 'mini-css-rev','mini-js-rev'],'rev-c','sftp_test'));

gulp 自定义插件

  1. 'use strict';
  2. let through = require('through2');
  3.  
  4. module.exports = function(){
  5. return through.obj(function(file, encoding, callback) {
  6. if(file.path.indexOf('common.js')>-1){
  7. var scripts=process.env.npm_lifecycle_event;
  8. console.log('追加变量 文件路径=',file.path);
  9. console.log('package.json scripts ==',scripts);
  10. var bool=false,text='';
  11. switch(scripts){
  12. case '本机': break;
  13. case 'ftp开发环境':text=';imgPath = "http://192.168.10.132";_path="http://192.168.10.132/api"';bool=true;break;
  14. case 'ftp133测试环境':text=';imgPath="http://aa-test.aaa.cn";_path="http://aa-test.aaa.cn/api"';bool=true;break;
  15. default: break;
  16. }
  17. if(bool){//追加内容
  18. if (file.isNull()||file.isStream()) {
  19. this.emit('error', new PluginError(PLUGIN_NAME, 'Streams are not supported!'));
  20. return callback();
  21. }
  22. let content = file.contents.toString();
  23. content+=text;
  24. file.contents = new Buffer(content);
  25. }
  26. console.log('追加变量 bool='+bool+',text='+text);
  27. }
  28. this.push(file);// 确保文件进入下一个 gulp 插件
  29. callback();
  30. });
  31. };

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. Spring Boot 2.x(九):遇到跨域不再慌

    什么是跨域 首先,我们需要了解一下一个URL是怎么组成的: // 协议 + 域名(子域名 + 主域名) + 端口号 + 资源地址 http: + // + www.baidu.com + :8080/ ...

  2. .Net语言 APP开发平台——Smobiler学习日志:如何设置页面的title

    1.修改Mobile Form的TitleText的属性 输入需要显示标题,如图1: 2.修改Mobile Form的TitleStyle属性 其中包括Image属性(窗体图标).BackColor属 ...

  3. Java Socket网络编程学习笔记(一)

    0.前言 其实大概半年前就已经看过网络编程Socket的知识了(传统IO),但是因为长时间的不使用导致忘的一干二净,最近正好准备校招,又重新看了网络编程这一章, 是传统IO(BIO)相关的内容,故在此 ...

  4. webpack 4 简单介绍

    webpack是什么? webpack是一个现代JavaScript应用程序的静态模块打包器(module bundler). 为什么要使用webpack呢? 随着web技术的发展,前端开发不再仅仅是 ...

  5. Dynamics 365-如何下载新版本的Tools

    最近新写了个Plugin,想注册到CRM中,但是使用旧版的PluginRegistration Tool的时候,总是加载不出来Plugin数据,所以寻思下载个最新版的Tool试试.现在下载Tools的 ...

  6. Windows7 64位环境6sv2.1大气传输模型修改源码添加国产高分卫星GF-1 GF-2光谱响应支持

    下面开始添加国产卫星光谱响应的支持: 以下主要参考文章“6S大气传输模型修改源码添加.自定义卫星光谱响应(以HJ-1B CCD为例)”网址:http://blog.csdn.net/sam92/art ...

  7. ASP.NET Core 入门教程 5、ASP.NET Core MVC 视图传值入门

    一.前言 1.本教程主要内容 ASP.NET Core MVC 视图引擎(Razor)简介 ASP.NET Core MVC 视图(Razor)ViewData使用示例 ASP.NET Core MV ...

  8. Cygwin 编译 ffmpeg

    1.在官网下载linux下的压缩包 https://ffmpeg.zeranoe.com/builds/source/ffmpeg/ffmpeg-3.2.4.tar.xz 2.进入cygwin,假定将 ...

  9. MongoDB 最大连接数 设置失效的异常分析

    背景介绍: 查询MongoDB配置参数,可以知道关于最大连接数的参数是maxConns.但是连接实例后,查看支持的最大连接数,还是默认的819. 说明:最大连接数是由maxConn (maxIncom ...

  10. Xshell连接linux主机

    一.获取linux主机的ip地址.用户名.密码 二.xshell里面建立连接 三.打开连接,操作远程linux主机