vue項(xiàng)目打包后,將文件復(fù)制到服務(wù)器顯然是很麻煩,于是結(jié)合網(wǎng)上的資料,寫下這篇自動化部署的記錄。
一乳蛾、安裝 scp2
npm install scp2 --save-dev
二、寫好腳本
例如 upload.js
(下面任選一個(gè)即可)
位置和
package.json
平級即可鄙币。
簡略版
'use strict'
// 引入scp2
var client = require('scp2');
client.scp('./dist/', { // 本地打包文件的位置
"host": 'XXX.XX.XX.XXX', // 服務(wù)器的IP地址
"port": 'XX', // 服務(wù)器端口肃叶, 一般為 22
"username": 'XXX', // 用戶名
"password": '*****', // 密碼
"path": 'XXX' // 項(xiàng)目部署的服務(wù)器目標(biāo)位置
}, err =>{
if (!err) {
console.log("項(xiàng)目發(fā)布完畢!")
} else {
console.log("err", err)
}
})
稍微美化下控制臺的輸出
'use strict'
// 引入scp2
var client = require('scp2');
// 下面三個(gè)插件是部署的時(shí)候控制臺美化所用 可有可無
const ora = require('ora');
const chalk = require('chalk');
const spinner = ora(chalk.green('正在發(fā)布到服務(wù)器...'));
spinner.start();
client.scp('./dist/', { // 本地打包文件的位置
"host": 'XXX.XX.XX.XXX', // 服務(wù)器的IP地址
"port": 'XX', // 服務(wù)器端口, 一般為 22
"username": 'XXX', // 用戶名
"password": '*****', // 密碼
"path": 'XXX' // 項(xiàng)目部署的服務(wù)器目標(biāo)位置
}, err =>{
spinner.stop();
if (!err) {
console.log(chalk.green("項(xiàng)目發(fā)布完畢!"))
} else {
console.log("err", err)
}
})
?記得項(xiàng)目git上傳時(shí)忽略此文件, 因?yàn)檫@里面包含了你的服務(wù)器地址十嘿、用戶以及密碼
三因惭、在 package.json
中添加 scripts 命令
"upload": "node upload.js",
"deploy": "npm run build && npm run upload"
四、執(zhí)行腳本
npm run deploy
運(yùn)行這個(gè)腳本命令之后绩衷,它會先
npm run build
執(zhí)行打包命令蹦魔,然后激率,執(zhí)行node upload.js
,將打包的文件上傳到服務(wù)器
五、結(jié)果
運(yùn)行腳本成功
這時(shí)候項(xiàng)目已經(jīng)打包完成了
六勿决、其他
看網(wǎng)上有更加好的腳本乒躺,分為測試網(wǎng)和現(xiàn)網(wǎng)。比如這篇文章: