首先下载npm模块

  1. npm install --save-dev gulp gulp-sftp webpack del
  1. gulp-sftp 上传服务器主要依赖
  2. gulp、webpack必备
  3. del 是一个清空文件目录的依赖包

gulpfile.js

  1. const gulp = require('gulp');
  2.  
  3. const webpack = require('webpack')
  1. const path = require('path');
  1. const del = require('del');
  1. const ftp = require('gulp-sftp');
  1. // 是webpack配置文件
  2. const webpackConfig = require('./webpack.config');
  1. // 是上传地址配置,可以在.gitignore中忽略此文件上传,为了安全本地拥有就可以了
  2. const config = require('./config');
  3.  
  4. // 判断是开发环境还是生产环境
  5. const isEnv = process.env.NODE_ENV == 'production';
  6. /**
  7. * 清除生产目录文件
  8. */
  9. gulp.task('clean', ['upload'], function (callback) {
  10. console.log('## 已经成功部署到服务器上')
  11. console.log('## 清除原来编译的代码')
  12. del(['.' + config.publicPath], callback)
  13. });
  14.  
  15. /**
  16. * 编译代码
  17. */
  18. gulp.task('build', function (callback) {
  19. console.log('## 代码编译开始')
  20. webpack(webpackConfig, function (err, state) {
  21. console.log('## 代码编译完成')
  22. callback(err)
  23. })
  24. });
  25.  
  26. /**
  27. * 编译代码,自动部署到服务器
  28. */
  29. gulp.task('upload', function (callback) {
  30. console.log('## 正在部署到服务器上')
  31. var dev = isEnv ? config.devDist : config.devTest
  32. gulp.src('.' + config.publicPath + '**')
  33. .pipe(ftp(Object.assign(dev, {callback})))
  34. });
  35.  
  36. /**
  37. * 上传到测试服务器上
  38. */
  39. gulp.task('devTest', ['build', 'upload', 'clean'])
  40.  
  41. /**
  42. * 上传到生产服务器上
  43. */
  44. gulp.task('devDist', ['build', 'upload', 'clean'])

config.js

  1. module.exports = {
  2. devTest: { //部署到测试服务器上
  3. remotePath: '/root/app/', //部署到服务器的路径
  4. host: 'xx.xxx.xxx.xx', //ip地址
  5. user: 'root', //帐号
  6. pass: "******", //密码
  7. port: 22 //端口
  8. },
  9. devDist: { //部署正式服务器上
  10. remotePath: '/root/app/', //部署到服务器的路径
  11. host: 'xx.xx.xxx.xxx', //ip地址
  12. user: 'root', //帐号
  13. pass: '******', //密码
  14. port: 22 //端口
  15. },
  16. publicPath: '/dist/' //程序编译好路径
  17. }

有一点要注意的是你会遇到这样的错误:

  1. [15:22:46] Starting 'upload'...
  2. [15:22:46] Authenticating with password.
  3. events.js:141
  4. throw er; // Unhandled 'error' event
  5. ^
  6. Error: No such file
  7. at SFTP._parse (E:\web\cdn\ns\node_modules\ssh2\lib\SFTP\SFTPv3.js:1090:23)
  8. at ChannelStream.<anonymous> (E:\web\cdn\ns\node_modules\ssh2\lib\SFTP\SFTPv3.js:72:10)
  9. at emitOne (events.js:77:13)
  10. at ChannelStream.emit (events.js:169:7)
  11. at readableAddChunk (_stream_readable.js:146:16)
  12. at ChannelStream.Readable.push (_stream_readable.js:110:10)
  13. at Parser.<anonymous> (E:\web\cdn\ns\node_modules\ssh2\lib\Channel.js:102:25)
  14. at emitOne (events.js:77:13)
  15. at Parser.emit (events.js:169:7)
  16. at Parser.parsePacket (E:\web\cdn\ns\node_modules\ssh2\lib\Parser.js:607:12)

config.js 你可以修改为这样:

  1. module.exports = {
  2. devTest: { //部署到测试服务器上
  3. remotePath: '/root/app/', // 仅仅是结尾多了一个”/“,部署到服务器的路径
  4. host: 'xx.xxx.xxx.xx', //ip地址
  5. user: 'root', //帐号
  6. pass: "******", //密码
  7. port: 22 //端口
  8. },
  9. devDist: { //部署正式服务器上
  10. remotePath: '/root/app/', // 仅仅是结尾多了一个”/“,部署到服务器的路径
  11. host: 'xx.xx.xxx.xxx', //ip地址
  12. user: 'root', //帐号
  13. pass: '******', //密码
  14. port: 22 //端口
  15. },
  16. publicPath: '/dist/' //程序编译好路径
  17. }

仅仅是结尾多了一个“/”,这样就可以成功了,是不是很神奇!

如果本文对你有帮助,点个赞

关于gulp-sftp上传到服务器的更多相关文章

  1. 利用nodejs监控文件变化并使用sftp上传到服务器

    很久没写博客了,因为最近在用react+express做一个自己的工具型网站(其实就是夺宝岛抢拍器) 然后因为经常要改动,而且又要放到服务器上进行测试.总是要webpack,然后手动把文件上传上去,不 ...

  2. C#远程执行Linux系统中Shell命令和SFTP上传文件

    一.工具:SSH.Net 网址:https://github.com/sshnet/SSH.NET 二.调用命令代码: Renci.SshNet.SshClient ssh = "); ss ...

  3. 使用SFTP上传文件到服务器的简单使用

    最近用到SFTP上传文件查找了一些资料后自己做了一点总结,方便以后的查询 /** * 将文件上传到服务器 * * @param filePath * 文件路径 * @param channelSftp ...

  4. sftp上传到远程服务器

    开发遇到一个需求,需要将图片通过sftp上传到远程服务器上,之前没用过这个功能,折腾了我好几天才搞定,下面记录下我的处理方法: $sftp = 'ssh2.sftp://';//连接sftp $con ...

  5. VS Code 关于SFTP上传文件到多服务器的配置

    工欲善其事,必先利其器! 刚学前端的时候一直用的DW来编写代码,其功能非常强大,但在Linux下不能用,所以就转VS Code了. 但是刚开始使用VS Code的时候,很多DW上的功能需要自己安装扩展 ...

  6. sftp上传 - 待完

    1.搭建本地sftp 1.1.下载msftpsrvr.exe软件 下载地址:http://www.download3k.com/Install-Core-FTP-Mini-SFTP-Server.ht ...

  7. 用jsch.jar实现SFTP上传下载删除

    java类: 需要引用的jar: jsch-0.1.53.jar 关于jsch有篇文章关于目录的问题写得非常好:http://www.zzzyk.com/show/9f02969327434a6c.h ...

  8. THINKPHP 3.2 PHP SFTP上传下载 代码实现方法

     一.SFTP介绍:使用SSH协议进行FTP传输的协议叫SFTP(安全文件传输)Sftp和Ftp都是文件传输协议.区别:sftp是ssh内含的协议(ssh是加密的telnet协议),  只要sshd服 ...

  9. Java Sftp上传下载文件

    需要使用jar包  jsch-0.1.50.jar sftp上传下载实现类 package com.bstek.transit.sftp; import java.io.File; import ja ...

  10. Xshell5下利用sftp上传下载传输文件

    sftp是Secure File Transfer Protocol的缩写,安全文件传送协议.可以为传输文件提供一种安全的加密方法.sftp 与 ftp 有着几乎一样的语法和功能.SFTP 为 SSH ...

随机推荐

  1. CMDB项目开发

    CMDB介绍 CMDB --Configuration Management Database 配置管理数据库, CMDB存储与管理企业IT架构中设备的各种配置信息,它与所有服务支持和服务交付流程都紧 ...

  2. 【转载】大白话Docker入门(一)

    原文:https://yq.aliyun.com/articles/63035 随着docker现在越来越热门,自己也对docker的好奇心也越来越重,终于忍不住利用了一些时间把docker学习一遍. ...

  3. kettle使用记录

    1.linux系统抽取数据 export KETTLE_HOME=/home/oracle/Kettle/pdi-ce-6.1.0.1-196/data-integration export JAVA ...

  4. mysql GTID

    之前一直通过binlog主从同步,现在发现GTID这种方式,记录一下,具体可参考网上教程.感觉配置使用更为简单方便,不知实际效果如何.

  5. kafka 重新分配partition

    登陆kafka manager 进入相关topic 点击generate partition assignments 点击reassign partirons

  6. 开源智能英文单词提取翻译工具(C#)

    WordsTool 这个工具用于分析文本文件中所有的英语单词 并且通过内置字典数据库工具对这些单词进行解析 可以生成表格形式 并且支持导出到excel文件中 用于学习单词 本代码禁止商业用途 如需要商 ...

  7. eclipse,代码中有错误,项目或者java类中却不显示红叉

    修改eclipse代码提示级别1.单个项目修改项目上右键-->properties-->java compiler-->building-->enable project sp ...

  8. Uni-app中Class绑定与Style绑定

    为了节约性能,我们将Class与Style的表达式通过compiler硬编码到uni-app中 支持语法和转换效果如下: Class支持语法: <view :class="{ acti ...

  9. Java数据类型与运算符

    Java 基本数据类型 Java 的两大数据类型: 内置数据类型 引用数据类型 内置数据类型 Java语言提供了八种基本类型.六种数字类型(四个整数型,两个浮点型),一种字符类型,还有一种布尔型. b ...

  10. 2018-2019-2 20165314『网络对抗技术』Exp5:MSF基础应用

    一.原理与实践说明 1.实践内容 本实践目标是掌握metasploit的基本应用方式,重点常用的三种攻击方式的思路.具体需要完成: 一个主动攻击实践,如ms08-067; (1分) 一个针对浏览器的攻 ...