关于gulp-sftp上传到服务器
首先下载npm模块
npm install --save-dev gulp gulp-sftp webpack del
- gulp-sftp 上传服务器主要依赖
- gulp、webpack必备
- del 是一个清空文件目录的依赖包
gulpfile.js
const gulp = require('gulp'); const webpack = require('webpack')
const path = require('path');
const del = require('del');
const ftp = require('gulp-sftp');
// 是webpack配置文件
const webpackConfig = require('./webpack.config');
// 是上传地址配置,可以在.gitignore中忽略此文件上传,为了安全本地拥有就可以了
const config = require('./config'); // 判断是开发环境还是生产环境
const isEnv = process.env.NODE_ENV == 'production';
/**
* 清除生产目录文件
*/
gulp.task('clean', ['upload'], function (callback) {
console.log('## 已经成功部署到服务器上')
console.log('## 清除原来编译的代码')
del(['.' + config.publicPath], callback)
}); /**
* 编译代码
*/
gulp.task('build', function (callback) {
console.log('## 代码编译开始')
webpack(webpackConfig, function (err, state) {
console.log('## 代码编译完成')
callback(err)
})
}); /**
* 编译代码,自动部署到服务器
*/
gulp.task('upload', function (callback) {
console.log('## 正在部署到服务器上')
var dev = isEnv ? config.devDist : config.devTest
gulp.src('.' + config.publicPath + '**')
.pipe(ftp(Object.assign(dev, {callback})))
}); /**
* 上传到测试服务器上
*/
gulp.task('devTest', ['build', 'upload', 'clean']) /**
* 上传到生产服务器上
*/
gulp.task('devDist', ['build', 'upload', 'clean'])
config.js
module.exports = {
devTest: { //部署到测试服务器上
remotePath: '/root/app/', //部署到服务器的路径
host: 'xx.xxx.xxx.xx', //ip地址
user: 'root', //帐号
pass: "******", //密码
port: 22 //端口
},
devDist: { //部署正式服务器上
remotePath: '/root/app/', //部署到服务器的路径
host: 'xx.xx.xxx.xxx', //ip地址
user: 'root', //帐号
pass: '******', //密码
port: 22 //端口
},
publicPath: '/dist/' //程序编译好路径
}
有一点要注意的是你会遇到这样的错误:
[15:22:46] Starting 'upload'...
[15:22:46] Authenticating with password.
events.js:141
throw er; // Unhandled 'error' event
^
Error: No such file
at SFTP._parse (E:\web\cdn\ns\node_modules\ssh2\lib\SFTP\SFTPv3.js:1090:23)
at ChannelStream.<anonymous> (E:\web\cdn\ns\node_modules\ssh2\lib\SFTP\SFTPv3.js:72:10)
at emitOne (events.js:77:13)
at ChannelStream.emit (events.js:169:7)
at readableAddChunk (_stream_readable.js:146:16)
at ChannelStream.Readable.push (_stream_readable.js:110:10)
at Parser.<anonymous> (E:\web\cdn\ns\node_modules\ssh2\lib\Channel.js:102:25)
at emitOne (events.js:77:13)
at Parser.emit (events.js:169:7)
at Parser.parsePacket (E:\web\cdn\ns\node_modules\ssh2\lib\Parser.js:607:12)
config.js 你可以修改为这样:
module.exports = {
devTest: { //部署到测试服务器上
remotePath: '/root/app/', // 仅仅是结尾多了一个”/“,部署到服务器的路径
host: 'xx.xxx.xxx.xx', //ip地址
user: 'root', //帐号
pass: "******", //密码
port: 22 //端口
},
devDist: { //部署正式服务器上
remotePath: '/root/app/', // 仅仅是结尾多了一个”/“,部署到服务器的路径
host: 'xx.xx.xxx.xxx', //ip地址
user: 'root', //帐号
pass: '******', //密码
port: 22 //端口
},
publicPath: '/dist/' //程序编译好路径
}
仅仅是结尾多了一个“/”,这样就可以成功了,是不是很神奇!
如果本文对你有帮助,点个赞
关于gulp-sftp上传到服务器的更多相关文章
- 利用nodejs监控文件变化并使用sftp上传到服务器
很久没写博客了,因为最近在用react+express做一个自己的工具型网站(其实就是夺宝岛抢拍器) 然后因为经常要改动,而且又要放到服务器上进行测试.总是要webpack,然后手动把文件上传上去,不 ...
- C#远程执行Linux系统中Shell命令和SFTP上传文件
一.工具:SSH.Net 网址:https://github.com/sshnet/SSH.NET 二.调用命令代码: Renci.SshNet.SshClient ssh = "); ss ...
- 使用SFTP上传文件到服务器的简单使用
最近用到SFTP上传文件查找了一些资料后自己做了一点总结,方便以后的查询 /** * 将文件上传到服务器 * * @param filePath * 文件路径 * @param channelSftp ...
- sftp上传到远程服务器
开发遇到一个需求,需要将图片通过sftp上传到远程服务器上,之前没用过这个功能,折腾了我好几天才搞定,下面记录下我的处理方法: $sftp = 'ssh2.sftp://';//连接sftp $con ...
- VS Code 关于SFTP上传文件到多服务器的配置
工欲善其事,必先利其器! 刚学前端的时候一直用的DW来编写代码,其功能非常强大,但在Linux下不能用,所以就转VS Code了. 但是刚开始使用VS Code的时候,很多DW上的功能需要自己安装扩展 ...
- sftp上传 - 待完
1.搭建本地sftp 1.1.下载msftpsrvr.exe软件 下载地址:http://www.download3k.com/Install-Core-FTP-Mini-SFTP-Server.ht ...
- 用jsch.jar实现SFTP上传下载删除
java类: 需要引用的jar: jsch-0.1.53.jar 关于jsch有篇文章关于目录的问题写得非常好:http://www.zzzyk.com/show/9f02969327434a6c.h ...
- THINKPHP 3.2 PHP SFTP上传下载 代码实现方法
一.SFTP介绍:使用SSH协议进行FTP传输的协议叫SFTP(安全文件传输)Sftp和Ftp都是文件传输协议.区别:sftp是ssh内含的协议(ssh是加密的telnet协议), 只要sshd服 ...
- Java Sftp上传下载文件
需要使用jar包 jsch-0.1.50.jar sftp上传下载实现类 package com.bstek.transit.sftp; import java.io.File; import ja ...
- Xshell5下利用sftp上传下载传输文件
sftp是Secure File Transfer Protocol的缩写,安全文件传送协议.可以为传输文件提供一种安全的加密方法.sftp 与 ftp 有着几乎一样的语法和功能.SFTP 为 SSH ...
随机推荐
- vscode 插件 与 技巧
lit-html 下载量:3 万 在 JavaScript/TypeScript 的文件中,如果有使用到 HTML 标记,lit-html 提供语法高亮和相应的补全支持. Git History 下载 ...
- Selenium+PhantomJS替代方案
问题描述: python3在使用selenium+PhantomJS动态抓取网页时,出现如下报错信息: UserWarning: Selenium support for PhantomJS has ...
- 2018-2019-2 《网络对抗技术》Exp0 Kali安装 Week1 20165237
2018-2019-2 <网络对抗技术>Exp0 Kali安装 Week1 20165237 安装虚拟机 首先创建虚拟机 创建好虚拟机后,打开虚拟机进行安装.第一步选择Graphcal i ...
- python(random模块)取10以内的随机数
上面有个selenium-webdriver循环点击百度搜索结果以及获取新页面的handler文章,随机获取百度搜索结果中不同id的结果,实现代码如下: #coding:utf- import ran ...
- asp.net core 的 razor pages 如何使用ajax调用后台方法
Razor 是一种允许您向网页中嵌入基于服务器的代码(Visual Basic 和 C#)的标记语法. 当网页被写入浏览器时,基于服务器的代码能够创建动态内容. 在网页加载时,服务器在向浏览器返回页面 ...
- Font Awesome,一套绝佳的图标字体库和CSS框架
http://fontawesome.dashgame.com/ http://www.runoob.com/font-awesome/fontawesome-tutorial.html Font A ...
- webstorm Terminal 位置错乱解决方案
win+R 打开终端,右击属性->勾选使用旧版控制台->确定 ,再重启webstrom 即可.
- table td中的内容过长,显示为固定长度,多余部分用省略号显示
简单描述:table数据过长,结果顶到下一格,影响了数据的查看 解决办法: 给table 加上style属性 另外 给td加上style标签修饰 <table class="tab ...
- md5加密 bas64加密
/** * 获取bas64加密的算法 * @param str * @return */ public static String getBase64(String str) { byte[] b = ...
- Mysql常用30种SQL查询语句优化方法
出处:http://www.antscode.com/article/12deee70111da0c4.html 1.应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使 ...