关于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 ...
随机推荐
- 「JavaScript面向对象编程指南」闭包
闭包 JS只有函数作用域,函数外为全局变量,函数内为局部变量 绿圆是函数fn的作用域,在这范围内可访问局部变量b和全局变量a,橙圆是fn内部函数inner的作用域,此范围内可访问自身作用域内的变量c, ...
- .call() 与 .apply() 的用法及区别
首先说明两个方法的含义: apply:调用一个对象的一个方法,用另一个对象替换当前对象.例如:B.apply(A, arguments);即A对象应用B对象的方法.call:调用一个对象的一个方法,用 ...
- 3D模型网站分享
http://www.cgjoy.com/work.php CG作品网 http://www.cgmxw.com/ CG模型王 http://www.cgmodel.cn/ CG模型网
- LNMP安装目录及配置文件位置
LNMP相关软件安装目录 Nginx 目录: /usr/local/nginx/ MySQL 目录 : /usr/local/mysql/MySQL数据库所在目录:/usr/local/mysql/v ...
- 执行大SQL脚本方法
当我们需要在SQLServer数据库里面执行一个大的文件时,会发现数据库根本无法打开该脚本文件,原因是因为查询分析器只能执行100M以内的文件,所以脚本过大就会造成内存溢出.此时我们可以使用osql工 ...
- 【原创】大数据基础之Impala(3)部分调优
1)将coordinator和executor角色分离 By default, each host in the cluster that runs the impalad daemon can ac ...
- 初学python之路-day08
#学习了编码后,还要了解三种字符串.# 一.# 普通字符串:u''以字符作为输出单位,# print(u'abc') # 用于显示abc# # 二进制字符串:b'' 二进制字符串以字节作为输出单位# ...
- spring-cloud-zuul服务网关
Zuul包含了对请求的路由和过滤两个最主要的功能: 其中路由功能负责将外部请求转发到具体的微服务实例上,是实现外部访问统一入口的基础,类似于保安的职能,而过滤器功能则负责对请求的处理过程进行干预,是实 ...
- 敏捷开发相关编辑思想(SOA、DDD、REST、CQRS)
这是第一次写有关编程思想的东西. 1.理解Martin Fowler提出的SOA(面向服务歧义) 2.理解DDD(Domain-Driven Design领域驱动设计): http://blog.cs ...
- Java模仿http请求工具类
package ln; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamRea ...