前端自动化部署

在常规的前端项目中,部署项目需要经过本地build,压缩文件,将压缩包上传至服务器并解压文件等步骤,过程较为繁琐。所以本人编写了一个nodejs脚本,用来告别手动上传的过程,配置使用简单,实现前端一键自动化部署。

前端自动化编译与部署脚本
当前支持window上传至linux服务器以及linux上传至linux服务器
如果您觉得对您有帮助 点个赞或者去GitHub点个star ,非常感谢
项目git地址

使用步骤

1.下载项目,git clone https://github.com/HEJIN2016/auto-deploy.git
将项目中autoDeploy.js文件拷贝至前端项目根目录下(与前端打包完之后的dist目录同级)

2.安装依赖:

 npm install archiver ssh2 -D

3.配置前端工程部署服务器用户密码等
在autoDeploy.js中,找到首行的对象Config,配置相关参数,配置如下

const Config = {
  host: 'test.com', // 服务器ip地址或域名
  port: 22, // 服务器ssh连接端口号
  username: 'root', // ssh登录用户
  password: '', // 密码
  // privateKey: fs.readFileSync('myKey.key'), // 私钥,私钥与密码二选一

  catalog: '/var/www/test', // 前端文件压缩目录,请勿以/符号结尾
  buildDist: 'dist', // 前端文件打包之后的目录,默认dist
  buildCommand: 'npm run build', // 打包前端文件的命令,默认为npm run build
  readyTimeout: 20000 // ssh连接超时时间
};

4.执行上传命令
node autoDeploy.js,耐心等待部署完毕,建议将node autoDeploy.js命令添加进入package.json中

部署基本流程介绍

1.执行build命令
2.压缩打包之后的文件

// 创建文件输出流
      let output = fs.createWriteStream(__dirname + '/' + fileName);
      let archive = archiver('zip', {
        zlib: { level: 9 } // 设置压缩级别
      });
      // 文件输出流结束
      output.on('close', function() {
        console.log(`----压缩文件总共 ${archive.pointer()} 字节----`);
        console.log('----压缩文件夹完毕----');
        resolve({
          success: true
        })
      });
      // 数据源是否耗尽
      output.on('end', function() {
        console.error('----压缩失败,数据源已耗尽----');
        reject();
      });
      // 存档警告
      archive.on('warning', function(err) {
        if (err.code === 'ENOENT') {
          console.error('----stat故障和其他非阻塞错误----')
        } else {
          console.error('----压缩失败----');
        }
        reject(err);
      });
      // 存档出错
      archive.on('error', function(err) {
        console.error('----存档错误,压缩失败----');
        console.error(err);
        reject(err);
      });
      // 通过管道方法将输出流存档到文件
      archive.pipe(output);

      // 打包dist里面的所有文件和目录
      archive.directory(filePath, false);
      // archive.directory(`../${Config.buildDist}/`, false);

      // 完成归档
      archive.finalize();

3.ssh连接服务器并上传文件
4.解压上传的文件
5.删除本地的压缩包文件,部署完毕

你可能感兴趣的:(javascript,前端,自动部署,node.js,npm)