1.0.8 • Published 10 months ago

@fragsky/mono-builder v1.0.8

Weekly downloads
-
License
ISC
Repository
github
Last release
10 months ago

Monorepo Builder

1 Overview

该模块旨在为 monorepo(单体仓库 monolithic repository)环境下的多模块开发提供全面的支持,旨在简化和优化模块的开发流程,目前,js-module的生成规则参考 cesium 的构建方式,并在其基础上进行了优化,其主要功能包括:

  1. Create Module:可以快速创建新的module,具备基本的配置;
  2. Watch:使用了gulp.watch,自动监听模块,当模块的文件修改后,可以自动快速的编译,动态生成入口文件和类型申明文件;
  3. Create Api Doc Dynamic:自动根据jsdoc生成多模块API文档,文档的样式直接采用了 Cesium API的样式;
  4. Package:对Rollup进行了封装,创建了RollupBuilder用于模块的打包;
  5. Language:该工具支持 TypescriptJavascript模块。

2 Install

  • npm install

    npm i @fragsky/mono-builder -D
  • pnpm install

    pnpm add @fragsky/mono-builder -D
  • 注意:该依赖项需要 tsd-docjsdoc,用于生成模块文档和声明文件,因此需要安装以下依赖:

    pnpm add tsd-jsdoc jsdoc@3.6.7 -D

3 Usage

可以通过 gulpfile 来构建,以下是 gulpfile.js 内容。

import { JavascriptBuilder, RollupBuilder, BuilderSettings, PackageMonitor } from 'mono-builder';

// build .d.ts
export const buildTS = async () => {
  const workspaces = ['packages/**']; // modules name
	
  // build batch
  for (const ws of workspaces) {
    await JavascriptBuilder.generateIndex(ws);
    await JavascriptBuilder.generateTypes(ws);
  }
};

// package module
export const build = async () => {
  const workspaces = packageJson.workspaces;

  for (const ws of workspaces) {
    const builder = new RollupBuilder();
    await builder.build(ws, {
      esm: true,
      minify: true,
      sourcemap: false,
      obfuscate: false,
      external: ['cesium'],
      globals: { cesium: 'Cesium' },
    });
  }
};

通过 package.json 中的 scripts 标签中的命令直接调用

...
"scripts": {
    "build": "gulp build",
    "build-ts": "gulp buildTS"
},
...