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 打包库 应该就可以实现 跨平台共用

相关推荐
徐同保7 分钟前
上传文件,在前端用 pdf.js 提取 上传的pdf文件中的图片
前端·javascript·pdf
怕浪猫8 分钟前
React从入门到出门第四章 组件通讯与全局状态管理
前端·javascript·react.js
博主花神8 分钟前
【React】扩展知识点
javascript·react.js·ecmascript
欧阳天风15 分钟前
用setTimeout代替setInterval
开发语言·前端·javascript
EndingCoder19 分钟前
箭头函数和 this 绑定
linux·前端·javascript·typescript
xkxnq25 分钟前
第一阶段:Vue 基础入门(第 11 天)
前端·javascript·vue.js
小oo呆31 分钟前
【自然语言处理与大模型】LangGraphV1.0入门指南:核心组件Nodes
前端·javascript·easyui
行走的陀螺仪41 分钟前
在UniApp H5中,实现路由栈的持久化
前端·javascript·uni-app·路由持久化·路由缓存策略
南玖i1 小时前
SuperMap iServer + vue3 实现点聚合 超简单!
javascript·vue.js·elementui
泰勒疯狂展开1 小时前
Vue3研学-标签ref属性与TS接口泛型
前端·javascript·vue.js