前言
好久沒寫文章了,一直在忙,剛好今天有點時間,就想寫點東西。廢話不多說,直接進入正文吧。
准備工作
需要用到scp2,這是基於ssh2實現的ftp上傳工具。npm安裝到開發依賴即可,也可全局安裝。
npm install -D scp2
具體文檔 https://www.npmjs.com/package/scp2。
本人的是angular項目開發的,其他框架也都一樣。項目根目錄新建文件publish.test.js,
代碼如下:
"use strict" const client = require('scp2'); const ssh2Cliend = require('ssh2').Client; const conn = new ssh2Cliend(); const ora = require('ora'); const chalk = require('chalk'); const spinner = ora(chalk.green('正在發布到本地虛擬機服務器……')); // 服務器配置 const serveConfig = { host: 'ip/域名', port: '22', //端口默認22 username: 'root', password: 'password', path: '/mydir/website/' }; async function backup() { conn.exec(`mv -fu ${serveConfig.path} ${serveConfig.path}.backup`, (e, mv) => { mv.on('close', async() => { // tslint:disable-next-line:no-console console.log('備份完成……'); // 開始上傳 await upload(); conn.end(); }) }) } async function upload() { spinner.start(); client.scp('./dist/master/', { host: serveConfig.host, port: serveConfig.port, username: serveConfig.username, password: serveConfig.password, path: serveConfig.path }, fail => { spinner.stop(); if (!fail) { // tslint:disable-next-line:no-console console.log('項目發布完成!'); } else { // tslint:disable-next-line:no-console console.log('fail:', fail); } }); } conn.on('ready', async() => { // 先備份原文件 await backup(); }).connect({ host: serveConfig.host, port: serveConfig.port, username: serveConfig.username, password: serveConfig.password });
package.json配置命令:
配置完成,運行 npm run publish:test,即可打包,發布到測試服務器。