UNPKG

sfx-meteojs

Version:

气象 JS 库, Javascript library for meteorological and atmospheric tools

123 lines (101 loc) 3.73 kB
# 使用 TS+rollup 打造一个 npm 工具库 >https://blog.csdn.net/time_____/article/details/129846790 ## 环境搭建 1、参照[这篇文章](https://hunter1024.blog.csdn.net/article/details/114024145)配置npm环境, 2、参考[这篇文章](https://hunter1024.blog.csdn.net/article/details/113989728)安装TS 3、在工具库或新文件夹中使用 npm init 初始化 ```sh npm init ``` 4、安装 rollup ```sh # 全局安装 npm install --global rollup rollup -v ``` ```sh # 本地安装 npm install --save rollup npx rollup -v ``` ```sh npm install --save-dev path ``` ```sh npm install --save-dev rollup npm install --save-dev @rollup/plugin-alias # 在代码中使用别名来引用模块 npm install --save-dev @rollup/plugin-terser # 压缩代码 npm install --save-dev @rollup/plugin-commonjs # 压缩代码 npm install --save-dev @rollup/plugin-typescript # 支持对TypeScript代码的打包 npm install --save-dev @rollup/plugin-node-resolve # 解析第三方模块的依赖关系 npm install --save-dev tslib # 如果在tsconfig中配置了lib就需要使用tslib依赖 @rollup/plugin-json @rollup/plugin-commonjs @rollup/plugin-babel ``` - rollup:模块打包器 - @rollup/plugin-alias - 在代码中使用别名来引用模块 - @rollup/plugin-json - - @rollup/plugin-node-resolve - 解析第三方模块的依赖关系 - @rollup/plugin-terser - Terser压缩代码,减小文件大小 - @rollup/plugin-typescript - 支持对TypeScript代码的打包 - tslib:如果在tsconfig中配置了lib就需要使用tslib依赖 - typescript:使用TS语法和类型系统 tsc ## 工具配置 在根目录新建rollup.config.js配置文件,输入以下代码 ```typescript import typescript from "@rollup/plugin-typescript"; import resolve from "@rollup/plugin-node-resolve"; import { readFileSync } from "fs"; import { terser } from "rollup-plugin-terser"; import alias from "@rollup/plugin-alias"; const packageJson = JSON.parse(readFileSync("./package.json", "utf8")); // 读取UMD全局模块名,在package中定义了 const pkgName = packageJson.umdModuleName; export default { input: "src/index.ts", output: [ { file: "dist/esm/index.js", format: "esm", }, { file: "dist/cjs/index.js", format: "cjs", }, { file: "dist/umd/index.js", format: "umd", name: pkgName, globals: { // 配置依赖中的UMD全局变量名 "event-message-center": "MessageCenter", "task-queue-lib": "TaskQueue", }, }, { file: "dist/bundle/index.js", format: "iife", name: pkgName, plugins: [terser()], }, ], plugins: [ typescript({ tsconfig: "./tsconfig.json", }), alias({ resolve: [".js"], }), resolve(), ], }; ``` <!-- 该选项用于指定生成 bundle 的格式。可以是以下之一: amd - 异步模块定义,适用于 RequireJS 等模块加载器 cjs - CommonJS,适用于 Node 环境和其他打包工具(别名:commonjs) es - 将 bundle 保留为 ES 模块文件,适用于其他打包工具以及支持 <script type=module> 标签的浏览器(别名: esm,module) iife - 自执行函数,适用于 <script> 标签。(如果你要为你的应用创建 bundle,那么你很可能用它。) umd - 通用模块定义,生成的包同时支持 amd、cjs 和 iife 三种格式 system - SystemJS 模块加载器的原生格式(别名: systemjs) UMD and IIFE output formats are not supported for code-splitting builds -->