sftpupload
引入
yarn add sftp-uploader
npm i sftp-uploader
简介
sftp-uploader
是一款基于 ssh2-sftp-client
封装的文件上传插件,通过监听webpack打包完成事件,可以实现将打包好的项目文件上传到指定的sftp服务器目录,支持集成为webpack插件或单独使用,支持自动创建上传目录。
配置
const path = require('path')
const sftpUploader = require('sftp-uploader')
const sftp = new sftpUploader({
dir: path.join(__dirname, 'dist/'),
url: '******',
host: '*****',
port: '*****',
username: '*****',
password: '*****',
delay: 0,
uploadFilter(file) => {
return file.name.endsWith(.gz) ? true : false
},
deleteFilter(file) => {
return file.name.endsWith(.gz) ? true : false
},
previewPath: 'https://www.baidu.com'
})
webpack中使用(vue项目为例)
module.exports = {
configureWebpack: config => {
return {
plugins: [sftp]
}
}
}
使用
配合打包命令使用(webpack中)
- 第一种方式直接在打包命令行后增加
deploy
参数即可, 如 npm run build deploy
或 yarn build deploy
, 即可在打包完成后自动上传。 - 第二种方式使用scripts配置,在package.json中添加如下配置
"scripts": {
"build": "vue-cli-service build --mode development",
"deploy": "yarn build deploy"
}
"scripts": {
"build": "vue-cli-service build --mode development",
"deploy": "set UPLOAD=true && yarn build"
}
"scripts": {
"build": "vue-cli-service build --mode development",
"deploy": "export UPLOAD=true && yarn build"
}
单独项目上传文件
针对单独上传已经编译好的文件,不通过监听打包完毕命令上传,可直接在vue.config.js最后加上如下代码
if (process.env.NODE_ENV === undefined) {
sftp.put()
}
node vue.config.js
::: tip
以上两种情况可以并存
:::
上传任意项目
sftp.put()
node uploader.js