1、安装 npm install scp2
2、在build/build.js 文件内引入插件
var client = require (' scp2 ')
3、在打包成功回调函数中添加
client.scp('本地目录', { //本地目录是指打包路径
host: '服务器Ip',
username: '账号',
password: '密码',
path: '服务器端目录'
}, function (err) {
if (err) {
console.log(err)
} else {
console.log('文件上传完毕!\n')
}
})
注:以上操作如果上传git则会暴露服务器信息等敏感信息
优化(不暴露服务器等敏感信息)
1、在packjson.js的scripts中添加buildUpload的命令,在build/build.js文件中进行判断当执行的命令为buildUpload时则打包并上传服务器,否则只做打包操作
注:获取当前执行的命令 process.env.npm_lifecycle_event
"scripts": {
"dev": "webpack-dev-server --inline --progress --config build/webpack.dev.conf.js",
"start": "npm run dev",
"unit": "jest --config test/unit/jest.conf.js --coverage",
"e2e": "node test/e2e/runner.js",
"test": "npm run unit && npm run e2e",
"build": "node build/build.js",
"buildUpload": "node build/build.js"
},
2、新建build/build.js同层级的serves.js文件,文件中抛出服务器信息:服务器地址、用户名、密码、服务器文件地址
注意:serves.js不要上传git,防止隐私信息泄漏,不上传git可以在.gitignore文件中添加/build/serves.js
serves.js
exports.servesUser = function () {
var user = { //本地目录是指打包路径
host: '', //服务器地址
username: '',//服务器用户名
password: '',//服务器密码
path: ''//服务器文件地址
}
return user
}
修改后的代码:
//打包完成后自动上传至服务器的文件地址
// 判断当命令为打包并上传时才执行自动上传命令
if(process.env.npm_lifecycle_event=='buildUpload'){
var client = require('scp2')//自动上传打包文件
var serves = require('./serves')//获取服务器信息,服务器地址、用户名、密码、服务器文件地址,
注:为防止账户泄漏信息,serves.js不上传git
// {
// host: '', //服务器地址
// username: '',//服务器用户名
// password: '',//服务器密码
// path: ''//服务器文件地址
// }
client.scp('本地目录是指打包路径如:/Users/demo/dist', serves.servesUser(), function (err) {
if (err) {
console.log(err)
} else {
console.log('文件上传完毕!\n')
}
})
}