sfx-meteojs
Version:
气象 JS 库, Javascript library for meteorological and atmospheric tools
123 lines (101 loc) • 3.73 kB
Markdown
# 使用 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
-->