Libon

Rollup lib build config

2 分钟 #JavaScript#bundler
rollup 打包插件的基本配置

ToC

1
{
2
"name": "",
3
"version": "0.4.0",
4
"type": "module",
5
"description": "",
6
"main": "dist/index.js",
7
"module": "dist/index.mjs",
8
"types": "dist/index.d.ts",
9
"exports": {
34 collapsed lines
10
"./*": "./*",
11
".": {
12
"browser": "./dist/index.module.js",
13
"import": "./dist/index.mjs",
14
"require": "./dist/index.js"
15
}
16
},
17
"files": [
18
"dist"
19
],
20
"sideEffects": false,
21
"scripts": {
22
"fix": "eslint ./**/* --format stylish --fix",
23
"dev": "rimraf dist && rollup -w -c ./rollup/dev.config.js",
24
"build": "rimraf dist && rollup -c ./rollup/prod.config.js"
25
},
26
"devDependencies": {
27
"@babel/preset-env": "^7.18.6",
28
"@rollup/plugin-commonjs": "^22.0.1",
29
"@rollup/plugin-node-resolve": "^13.3.0",
30
"@rollup/plugin-replace": "^4.0.0",
31
"@typescript-eslint/eslint-plugin": "^5.28.0",
32
"@typescript-eslint/parser": "^5.28.0",
33
"eslint": "^8.20.0",
34
"eslint-config-airbnb-base": "^15.0.0",
35
"eslint-plugin-import": "^2.26.0",
36
"rimraf": "^3.0.2",
37
"rollup": "^2.77.0",
38
"rollup-plugin-dts": "^4.2.1",
39
"rollup-plugin-terser": "^7.0.2",
40
"rollup-plugin-typescript2": "^0.31.1",
41
"typescript": "^4.7.4"
42
}
43
}

babel.config.js

1
module.exports = {
2
presets: ['@babel/preset-env'],
3
};

.npmrc

1
shamefully-hoist=true
2
prefer-offline=true
1
{
2
"root": true,
3
"env": {
4
"es6": true,
5
"browser": true
6
},
7
"parserOptions": {
8
"ecmaVersion": 2018
9
},
48 collapsed lines
10
"plugins": [
11
"@typescript-eslint"
12
],
13
"globals": {
14
"window": true,
15
"document": true
16
},
17
"extends": [
18
"plugin:@typescript-eslint/eslint-recommended",
19
"plugin:@typescript-eslint/recommended",
20
"airbnb-base"
21
],
22
"ignorePatterns": [
23
"node_modules/**",
24
"playgrounds/**",
25
"rollup/**",
26
"dist/**",
27
"src/types/**"
28
],
29
"overrides": [
30
{
31
"files": ["*.ts", "*.tsx", "*.d.ts"],
32
"parserOptions": {
33
"project": ["tsconfig.json"]
34
}
35
},
36
{
37
"files": ["rollup/**"],
38
"parserOptions": {
39
"sourceType": "module"
40
},
41
"rules": {
42
"no-console": "off"
43
}
44
},
45
{
46
"files": ["src/**/*"],
47
"rules": {
48
"import/no-unresolved": "off",
49
"import/extensions": ["error", {
50
"ignorePackages": true,
51
"typescript": "never"
52
}],
53
"no-param-reassign": ["off"]
54
}
55
}
56
]
57
}
1
{
2
"compilerOptions": {
3
"sourceMap": true,
4
"alwaysStrict": false,
5
"declaration": true,
6
"declarationMap": true,
7
"downlevelIteration": true,
8
"importHelpers": true,
9
"inlineSources": true,
18 collapsed lines
10
"isolatedModules": true,
11
"lib": ["es6", "dom"],
12
"moduleResolution": "node",
13
"noEmitHelpers": true,
14
"noErrorTruncation": true,
15
"noFallthroughCasesInSwitch": true,
16
"noImplicitReturns": true,
17
"noImplicitUseStrict": true,
18
"noUnusedLocals": true,
19
"noUnusedParameters": true,
20
"preserveWatchOutput": true,
21
"strictBindCallApply": false,
22
"strict": true,
23
"target": "es6",
24
"types": ["node"],
25
},
26
"include": ["src/**/*"]
27
}
1
root = true
2
3
[*]
4
indent_size = 2
5
indent_style = space
6
charset = utf-8
7
end_of_line = lf
1
import common from '@rollup/plugin-commonjs';
2
import resolve from '@rollup/plugin-node-resolve';
3
import typescript from 'rollup-plugin-typescript2';
4
5
const onwarn = (msg, warn) =>
6
!/Circular|preventAssignment/.test(msg) && warn(msg);
7
8
export default [
9
{
9 collapsed lines
10
input: 'src/index.ts',
11
output: {
12
file: 'xxx', // 在开发的时候可以直接把测试包打到目标测试的项目里
13
format: 'esm',
14
},
15
plugins: [resolve(), common(), typescript()],
16
onwarn,
17
},
18
];
1
import dts from 'rollup-plugin-dts';
2
import common from '@rollup/plugin-commonjs';
3
import resolve from '@rollup/plugin-node-resolve';
4
import typescript from 'rollup-plugin-typescript2';
5
import { terser } from 'rollup-plugin-terser';
6
7
export default [
8
{
9
input: 'src/index.ts',
41 collapsed lines
10
output: {
11
file: 'dist/index.js',
12
format: 'cjs',
13
exports: 'default'
14
},
15
plugins: [resolve(), common(), typescript(), terser()],
16
},
17
18
{
19
input: 'src/index.ts',
20
output: [
21
{
22
file: 'dist/index.mjs',
23
format: 'esm',
24
},
25
],
26
plugins: [resolve(), common(), typescript(), terser()],
27
},
28
29
{
30
input: 'src/index.ts',
31
output: [
32
{
33
file: 'dist/index.module.js',
34
format: 'es',
35
},
36
],
37
plugins: [resolve(), common(), typescript(), terser()],
38
},
39
40
{
41
input: 'src/index.ts',
42
output: [
43
{
44
file: 'dist/index.d.ts',
45
format: 'es',
46
},
47
],
48
plugins: [dts()],
49
},
50
];

CD ..
回顾上一篇
CSS line-height