UNPKG

5.11 kBTypeScriptView Raw
1import type { Plugin } from 'rollup';
2import type { FilterPattern } from '@rollup/pluginutils';
3import type { RollupNodeResolveOptions } from '@rollup/plugin-node-resolve';
4import type { RollupReplaceOptions } from '@rollup/plugin-replace';
5import type { RollupCommonJSOptions } from '@rollup/plugin-commonjs';
6import type { RollupInjectOptions } from '@rollup/plugin-inject';
7import type { Options as RollupTerserOptions } from 'rollup-plugin-terser';
8import type { RPT2Options } from 'rollup-plugin-typescript2';
9import type { RollupAliasOptions } from '@rollup/plugin-alias';
10import type { PluginVisualizerOptions } from 'rollup-plugin-visualizer';
11import type { PostCSSPluginConf } from 'rollup-plugin-postcss';
12import type { VuePluginOptions } from 'rollup-plugin-vue';
13import type { CopyOptions } from 'stan-utils';
14export declare type BundleType = 'rollup' | 'babel';
15export declare type OutputModule = 'cjs' | 'esm' | 'system' | 'umd';
16export interface BaseBundleOptions {
17 file?: string;
18 /**
19 * 打包工具
20 * @default rollup
21 */
22 bundler?: BundleType;
23 /**
24 * 压缩代码
25 * js terser
26 * @default false
27 */
28 minify?: boolean;
29 /**
30 * 只生成压缩的代码
31 * @default false
32 */
33 minifyOnly?: boolean;
34 /**
35 * 输出sourcemap
36 * @default false
37 */
38 sourcemap?: boolean;
39 /**
40 * 配置 node 或者 browser 库
41 */
42 target?: 'node' | 'browser';
43 runtimeHelpers?: boolean;
44}
45export interface UMDOptions extends BaseBundleOptions {
46 name?: string;
47 /**
48 * 可以支持 $=jquery,React=react
49 */
50 globals?: Record<string, string> | string;
51}
52export interface ESMOptions extends BaseBundleOptions {
53 mjs?: boolean;
54}
55export interface CJSOptions extends BaseBundleOptions {
56 /**
57 * 导入模块的延迟初始化
58 * https://babeljs.io/docs/en/babel-plugin-transform-modules-commonjs
59 */
60 lazy?: boolean;
61}
62export interface SYSOptions extends BaseBundleOptions {
63}
64/**
65 * build options
66 */
67export interface BundleOptions extends BaseBundleOptions {
68 /**
69 * 入口文件
70 * @default src/index.js, src/index.ts, src/index.tsx, src/index.jsx
71 */
72 entry?: string;
73 esm?: ESMOptions | BundleType | boolean;
74 cjs?: CJSOptions | BundleType | boolean;
75 umd?: UMDOptions | boolean;
76 system?: SYSOptions | boolean;
77 include?: FilterPattern;
78 disableTypeCheck?: boolean;
79 /**
80 * 配置是否提取 css 为单独文件。
81 */
82 extractCSS?: boolean;
83 /**
84 * 是否在 <head>里注入css, 如果extractCSS: true,则为false
85 */
86 injectCSS?: boolean;
87 /**
88 * 打包的模块大小可视化展示
89 * 使用了 rollup-plugin-visualizer
90 */
91 analyze?: boolean;
92 /**
93 * babel plugin 配置
94 * @note 不推荐配置 会覆盖默认调优的配置
95 */
96 babelPlugins?: any[];
97 /**
98 * babel presets
99 * @note 不推荐配置 会覆盖默认调优的配置
100 */
101 babelPresets?: string[];
102 /**
103 * 新增 babel plugin
104 */
105 extraBabelPlugins?: any[];
106 /**
107 * 新增 babel presets
108 */
109 extraBabelPresets?: any[];
110 /**
111 * rollup 的 external 保留内部默认处理,新增 external
112 * 打包esm, cjs时 dependencies 和 peerDependencies 里的内容会被 external
113 * 打包umd时 peerDependencies 会被 external
114 */
115 extraExternals?: (string | RegExp)[];
116 /**
117 * 配置依赖不 external
118 */
119 externalsExclude?: (string | RegExp)[];
120 /**
121 * 只external peerDependencies
122 * @default false
123 */
124 externalPeerDependenciesOnly?: boolean;
125 /**
126 * 配置额外 postcss plugin
127 */
128 extraPostCSSPlugins?: any[];
129 /**
130 * 配置额外 rollup plugin
131 */
132 extraRollupPlugins?: Plugin[];
133 /**
134 * 配置 @rollup/plugin-node-resolve 参数
135 */
136 nodeResolveOpts?: RollupNodeResolveOptions;
137 /**
138 * 配置 @rollup/plugin-replace 参数
139 */
140 replaceOpts?: RollupReplaceOptions;
141 /**
142 * 配置 @rollup/plugin-commonjs 参数
143 */
144 commonjsOpts?: RollupCommonJSOptions;
145 /**
146 * 配置 @rollup/plugin-inject 参数
147 */
148 injectOpts?: RollupInjectOptions;
149 /**
150 * 配置 rollup-plugin-terser 参数
151 */
152 terserOpts?: RollupTerserOptions;
153 /**
154 * 配置 rollup-plugin-typescript2 参数
155 */
156 typescript2Opts?: RPT2Options;
157 /**
158 * 配置 @rollup/plugin-alias 参数
159 */
160 aliasOpts?: RollupAliasOptions;
161 /**
162 * 配置 rollup-plugin-visualizer
163 */
164 visualizerOpts?: PluginVisualizerOptions;
165 /**
166 * 配置 rollup-plugin-postcss
167 */
168 postcssOpts?: PostCSSPluginConf;
169 /**
170 * copy 文件
171 * 如果是watch模式,这些复制的文件也会被watch
172 */
173 copy?: CopyOptions;
174 /**
175 * vue 插件配置
176 * https://www.npmjs.com/package/rollup-plugin-vue
177 */
178 vuePluginOpts?: VuePluginOptions;
179}
180export interface BuildOptions {
181 cwd: string;
182 rootPath?: string;
183 watch?: boolean;
184 args?: BundleOptions;
185 verbose?: boolean;
186}