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

相关推荐
gnip6 小时前
企业级配置式表单组件封装
前端·javascript·vue.js
掘金安东尼8 小时前
抛弃自定义模态框:原生Dialog的实力
前端·javascript·github
hj5914_前端新手12 小时前
javascript基础- 函数中 this 指向、call、apply、bind
前端·javascript
Hilaku12 小时前
都2025年了,我们还有必要为了兼容性,去写那么多polyfill吗?
前端·javascript·css
LuckySusu12 小时前
【js篇】JavaScript 原型修改 vs 重写:深入理解 constructor的指向问题
前端·javascript
LuckySusu12 小时前
【js篇】如何准确获取对象自身的属性?hasOwnProperty深度解析
前端·javascript
LuckySusu12 小时前
【js篇】深入理解 JavaScript 作用域与作用域链
前端·javascript
LuckySusu12 小时前
【js篇】call() 与 apply()深度对比
前端·javascript
LuckySusu12 小时前
【js篇】addEventListener()方法的参数和使用
前端·javascript
LuckySusu13 小时前
【js篇】深入理解 JavaScript 原型与原型链
前端·javascript