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

相关推荐
蘑菇王2 分钟前
无需打包构建?ESM Bundleless 开发的探索与实践
前端·javascript
秋天的一阵风21 分钟前
‌ES Module 都过十岁生日了,你还不了解它的运行原理吗?
前端·javascript·面试
Moment1 小时前
前端白屏检测SDK:从方案设计到原理实现的全方位讲解 ☺️☺️☺️
前端·javascript·面试
阿波次嘚1 小时前
关于在electron(Nodejs)中使用 Napi 的简单记录
前端·javascript·electron
接着奏乐接着舞。1 小时前
Electron + Vue 项目如何实现软件在线更新
javascript·vue.js·electron
Ting丶丶1 小时前
Electron入门笔记
javascript·笔记·electron
咖啡虫1 小时前
解决 React 中的 Hydration Failed 错误
前端·javascript·react.js
贩卖纯净水.1 小时前
《React 属性与状态江湖:从验证到表单受控的实战探险》
开发语言·前端·javascript·react.js
束尘1 小时前
React面试(二)
javascript·react.js·面试
束尘1 小时前
React通过命令式的弹窗控制,实现组件封装
javascript·react.js·ecmascript