关于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 ...
随机推荐
- 开启Apache的server status监测
从httpd.conf 打开 status_module#LoadModule status_module modules/mod_status.so修改成LoadModule status_modu ...
- jQuery的一些基本的函数和用jQuery做一些动画操作
jQuery是对js的封装,因为js有一些不方便的地方.所以,jQuery才会去对js进行封装. jQuery对于标签元素的获取 $('div')或$('li') <!DOCTYPE html& ...
- 【linux终端操作】
1. ctr + alt + t 打开新的终端窗口2. ctr + shift + + 终端窗口字体放大3. ctr + - 终端窗口字体缩小4. ls : 查看目录下的文件信息5. pwd: 查看目 ...
- 工程师的URL大全
作者:邓聪聪 https://bgp.he.net/ip #关于IP地址广播的AS查询及地址所属 http://ipwhois.cnnic.net.cn/ ...
- Nginx配置SSL证书部署HTTPS方法
1.申请域名,绑定服务器ip(我申请的是阿里云服务器,以下就此为例) 2.可以在阿里云上免费申请SSL证书(下载证书,后续会用到) 3.在服务器中配置证书 在服务器上安装Nginx 将下载好的证书上传 ...
- nyoj 633 幂
幂 nyoj 633 应用数学 幂 时间限制:3000 ms | 内存限制:65535 KB 描述 在学习循环的时候,我们都练习过利用循环计算a的k次方.现在给定整数k和一个整数m,请你求出对 ...
- 记一次简单的GetShell案例
案例链接: http://202.112.51.184:8007/ 打开链接,发现分了多个页面: 挨个点击,大概清楚是上传指定格式的文件然后在搜索的时候使文件执行从而GetShell,观察发现点击每个 ...
- spring 启动找不到shiro中 自定义的realm对应的class问题
干巴巴盯着项目半天,启动了好多次,每次都是sping报错找不到shiro配置文件中自定义的realm对应的class文件,明明有的,就是找不到. 后来将eclipse对应的jdk1.7 更新为1.8 ...
- Docker commit 命令保存的镜像文件太大的问题
基础镜像: centos7.5 进入容器后, 先后安装了 jdk1.8, maven3.6.0, git, rocketmq4.3.2 安装完成后使用 docker commit 命令保存为镜像 结果 ...
- Long Long Ago 二分查找
L: Long Long Ago 时间限制: 1 s 内存限制: 128 MB 提交 我的状态 题目描述 今天SHIELD捕获到一段从敌方基地发出的信息里面包含一串被经过某种算法加密过的的序 ...