-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathrollup.config.js
More file actions
55 lines (51 loc) · 1.67 KB
/
Copy pathrollup.config.js
File metadata and controls
55 lines (51 loc) · 1.67 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
import path from 'path';
import fs from 'fs';
import esbuild from 'rollup-plugin-esbuild';
import css from 'rollup-plugin-css-only';
import { nodeResolve } from '@rollup/plugin-node-resolve';
import vue from 'rollup-plugin-vue';
import scss from 'rollup-plugin-scss';
import commonjs from 'rollup-plugin-commonjs';
import { terser } from 'rollup-plugin-terser';
import typescript from '@rollup/plugin-typescript';
// not comps files
const NOT_COMPS = ['index.ts', 'vue-shim.d.ts'];
// 筛选出需要打包的组件
let comps = fs.readdirSync('./packages/components');
comps = comps.filter((v) => !NOT_COMPS.includes(v));
// format by { input: 'packages/components/Button/index.js', name: 'h-button' }
// 此处输出的是单独的组件的包,为了按需引入
const inputComps = comps.map((fileName) => ({
input: `packages/components/${fileName}/index.ts`,
name: `h${fileName.replace(/([A-Z])/g, '-$1').toLowerCase()}`,
}));
// 这是整个大的包
const defaultComps = [{ input: 'packages/components/index.ts', name: 'h-design' }];
// 将要打包输出的组件
const inputs = [...defaultComps, ...inputComps];
// rollup config
export default inputs.map((com) => ({
input: path.resolve(__dirname, com.input), // 输入
output: [
{
name: com.name,
file: `lib/${com.name}.js`,
format: 'umd', // 输出格式:amd / esm / iife / umd / cjs / system
exports: 'named'
}
],
plugins: [
scss(),
css(),
vue({
target: 'browser',
css: false,
}),
commonjs(),
nodeResolve(),
esbuild(),
typescript(),
terser(),
],
external: ['vue', 'core-js'], // 告诉rollup不要将这些依赖打包,而作为外部依赖
}));