irs平台快速打包构建脚本说明及源码.md

fast.js IRS快速打包应用node脚本说明

1.原理

在 IRS 应用平台上传编译的的源码 zip包后 会执行以下编译流程

  1. 解压 zip 包
  2. 在解压后的目录执行 npm install 命令
  3. 执行 npm run build命令
  4. 将编译完成的构建物目录(默认/build)下文件内容拷贝至部署目录
  5. 构建完成

根据观察日志 ,编译流程主要耗时在 安装依赖 和 build 阶段,所以我们可以将该步骤在本地提前做好 可以大大提高平台的构建速度,以及规避一些因为 node 或系统环境与本地开发环境不一致导致的编译失败问题。

手动实现步骤如下

  1. 本地执行 npm run build
  2. 创建一个新的文件夹 fast-pack (叫什么随意)
  3. 在该文件夹下 创建 /fast-pack/dist 目录
  4. fast-pack目录下创建 package.json文件并写入以下内容
json 复制代码
{
    "name": "fast-build",
    "version": "1.0.0",
    "main": "index.js",
    "license": "MIT",
    "scripts": {
        "build": "mkdir build;mv ./dist/* ./build"
    }
}

在上方代码中 核心的是 mkdir build;mv ./dist/* ./build 命令,该命令将会在 IRS 上执行,其意思是

mkdir build 创建一个 build目录。 ② mv ./dist/* ./build./dist/ 下的所有文件拷贝至 ./build 目录 。当在 IRS 平台的编译环境中执行 npm run build时就会执行这两个命令 5. 将步骤 1 的构建结果拷贝至fast-pack/dist/ 目录下 6. 将fast-pack 目录打包为 fast-pack.zip 7. 将fast-pack.zip 上传至 IRS 平台 (和原来上传整个源码包一样)

2.脚本完整代码

javascript 复制代码
const  util =  require("util") ;
const child_process = require('child_process');
const fs = require('fs');

const execter = util.promisify(child_process.exec);
const log = (msg)=>console.log('[FAST-PACK]-LOG:',msg);
async function main(){
    log('程序启动')
    if(fs.existsSync('./fast-pack')){
      log('删除已存在文件夹')
      fs.rmdirSync('./fast-pack', { recursive: true });
    }
    if(fs.existsSync('./fast-pack.zip')){
       log("清理旧的打包");
       fs.rmSync('./fast-pack.zip')
    }
    log('创建目录')
    fs.mkdirSync('./fast-pack')
    log("创建构建物目录")
    fs.mkdirSync('./fast-pack/dist')
    log('拷贝构建物')
 
    await execter('cp -r ./build/* ./fast-pack/dist')
    const packageJSON = `
    {
        "name": "fast-build",
        "version": "1.0.0",
        "main": "index.js",
        "license": "MIT",
        "scripts": {
          "build": "mkdir build;mv ./dist/* ./build"
        }
      }
    `
    log('写入package.json')
    fs.writeFileSync('./fast-pack/package.json',packageJSON)

    log('压缩文件...')
    const res  = await execter('zip  -r ./fast-pack.zip ./fast-pack/*;')
    console.log(res)
    log('Success! 执行结束打包成功')
   
}
main();
// fs.copy('./fast-pack/dist','./dist')

3.使用

  1. fast.js拷贝至项目根目录下
  2. 执行 node fast.js
  3. 执行成功后 会在项目根目录生成一个 fast-pack.zip 文件
  4. 上传该文件至 IRS 平台

4.说明

因涉及 unix/linux 命令执行 目前本脚本仅在 macOS 下可执行,Windows 环境下可尝试手动打包步骤 或者自行改写脚本 要改的话其实只要 更改 const res = await execter('zip -r ./fast-pack.zip ./fast-pack/*;') 部分的zip 打包实现部分的代码即可,可以通过安装一些node 的 zip 打包库 应该就可以实现 跨平台共用

相关推荐
Bio Coder44 分钟前
学习用 Javascript、HTML、CSS 以及 Node.js 开发一个 uTools 插件,学习计划及其周期
javascript·学习·html·开发·utools
凹凸曼打不赢小怪兽2 小时前
react 受控组件和非受控组件
前端·javascript·react.js
忠实米线3 小时前
使用pdf-lib.js实现pdf添加自定义水印功能
前端·javascript·pdf
明辉光焱3 小时前
[Electron]总结:如何创建Electron+Element Plus的项目
前端·javascript·electron
牧码岛4 小时前
Web前端之汉字排序、sort与localeCompare的介绍、编码顺序与字典顺序的区别
前端·javascript·web·web前端
云空4 小时前
《InsCode AI IDE:编程新时代的引领者》
java·javascript·c++·ide·人工智能·python·php
咔咔库奇4 小时前
ES6基础
前端·javascript·es6
bug爱好者5 小时前
如何解决sourcetree 一打开就闪退问题
前端·javascript·vue.js
徐小夕5 小时前
Flowmix/Docx 多模态文档编辑器:V1.3.5版本,全面升级
前端·javascript·架构
迂 幵5 小时前
vue el-table 超出隐藏移入弹窗显示
javascript·vue.js·elementui