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

相关推荐
哟哟耶耶1 小时前
Plugin-安装Vue.js devtools6.6.3扩展(组件层级可视化)
前端·javascript·vue.js
Geoffwo2 小时前
electron中拦截请求
前端·javascript·electron
小二·4 小时前
【万字源码级剖析】深入理解 Vue 3 响应式系统:ref、reactive、computed 与 effect 的底层实现
前端·javascript·vue.js
且菜且折腾5 小时前
react快捷键hook
javascript·react.js·ecmascript
一路向前的月光5 小时前
前端采用electron-hiprint控件实现静默打印
前端·javascript·electron
奶糖 肥晨6 小时前
JS自动检测用户国家并显示电话前缀教程|vue uniapp react可用
javascript·vue.js·uni-app
啊花是条龙6 小时前
《产品经理说“Tool 分组要一条会渐变的彩虹轴,还要能 zoom!”——我 3 步把它拆成 1024 个像素》
前端·javascript·echarts
青茶3606 小时前
【js教程】如何用jq的js方法获取url链接上的参数值?
开发语言·前端·javascript
晴栀ay7 小时前
React性能优化三剑客:useMemo、memo与useCallback
前端·javascript·react.js
知其然亦知其所以然7 小时前
别再死记硬背了,一篇文章搞懂 JS 乘性操作符
前端·javascript·程序员