前端黑科技篇章之scp2,让你一键打包部署服务器

1,568 阅读1分钟

scp2是一个使用nodejs对于SSH2的模拟实现,它可以让我们编译之后将项目推送至测试环境,以方便测试。

项目安装scp2

npm i scp2 -D

编写配置文件

创建scp2的配置文件 upload.server.js

const serInfo = JSON.parse(process.env.npm_config_argv).cooked // 获取终端命令
const server = {
  host: serInfo[2], // 服务器ip
  port: '22', // 端口一般默认22
  username: serInfo[3] || 'root', // 用户名
  password: serInfo[4] || 'root', // 密码
  pathNmae: '', // 上传到服务器的位置
  locaPath: './dist/' // 本地打包文件的位置
}

const argv1 = process.argv
console.log(argv1)
console.log(serInfo)
// 引入scp2
const client = require('scp2')
const ora = require('ora')
const spinner = ora('正在发布到服务器...')

const Client = require('ssh2').Client
const conn = new Client()

console.log('正在建立连接')
conn.on('ready', () => {
  console.log('已连接')
  if (!server.pathNmae) {
    console.log('连接已关闭')
    conn.end()
    return false
  }

  conn.exec('rm -rf' + server.pathNmae + '/*', (err, stream) => {
    console.log(err + '删除文件')
    stream.on('close', (code, signal) => {
      console.log('开始上传')
      spinner.start()
      client.scp(server.locaPath, {
        'host': server.host,
        'port': server.port,
        'username': server.username,
        'password': server.password,
        'path': server.pathNmae
      }, err => {
        spinner.stop()
        if (!err) {
          console.log('项目发布完毕')
        } else {
          console.log('err', err)
        }
        conn.end()
      })
    })
  })
}).connect({
  host: server.host,
  port: server.port,
  username: server.username,
  password: server.password
  // privateKey: '' // 私秘钥
})


配置package.json

image.png

两种上传方式,个人比较喜欢第二种哟

  1. build:pub:一键打包并上传服务器
  2. build:打包上传然后执行npm run publish 上传服务器

实战例子

弄好以上配置,在终端上敲 npm run build 然后再敲 npm run publish 得到以下结果。

image.png

已经发布到指定IP知道目录的服务器啦,这样我们就不用通过第三方ftp工具去上传了哦,是不是方便了很多,如果觉得该文章对你有帮助,请点个小赞赞吧。

番外

下面是本篇章前端黑科技工具篇哦,大大提高了前端开发效率呢。

1.前端黑科技篇章之plop,让你也拥有自己的脚手架