-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathrollup.config.js
195 lines (176 loc) · 5.99 KB
/
rollup.config.js
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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
import path from 'path';
/** rollup默认对node模块不友好,需要使用该插件 帮助 Rollup 查找外部模块,然后安装 */
import resolve from '@rollup/plugin-node-resolve';
/** 插件可以解决 ES6模块的查找导入,但是npm中的大多数包都是以CommonJS模块的形式出现的,所以需要使用这个插件将CommonJS模块转换为 ES2015 供 Rollup 处理 */
import common from '@rollup/plugin-commonjs';
import json from '@rollup/plugin-json';
/** 变量替换,可以将动态设置的变量提取出来在配置文件中设置 */
import replace from '@rollup/plugin-replace';
/** 打包过程中实现代码压缩 */
import {terser} from 'rollup-plugin-terser';
/** 用来转码 通过这个插件可以方便的使用 javascript 的新特性 */
import babel from 'rollup-plugin-babel';
/** 用来使用node的内置包的,如util、buffer等 */
import builtins from 'rollup-plugin-node-builtins';
//rollup-plugin-uglify 压缩 js 代码
//rollup-plugin-eslint 代码检查
//另外,需要创建 .eslintrc 文件配置 eslint 规则
// eslint({
// include: ['src/**/*.js'] 需要检查的部分
// }),
import os from 'os';
const cpuNums = os.cpus().length;
const NODEJS_BUILD_CONFIG = {
input: {
index: path.resolve(__dirname, './src/index.js'),
},
plugins: [
// builtins(),
// resolve({
// mainFields: ['module', 'main'],
// module: true, // ES6模块尽可能使用 ‘module’字段
// browser: false, // 适配需要加载browser 模块的包
// //jsnext: true, // 该属性是指定将Node包转换为ES2015模块
// // main 和 browser 属性将使插件决定将那些文件应用到bundle中
// //main: true, // Default: true
// }),
// babel({
// exclude: 'node_modules/**', // 只转译我们的源代码
// runtimeHelpers: true
// }),
// json(),
common({
include: 'node_modules/**', // 包括
exclude: [], // 排除
extensions: ['.js', '.ts']
}),
replace({
'process.env.NODE_ENV': JSON.stringify(process.env.NODE_ENV)
})
// replace({
// 'process.env.NODE_ENV': JSON.stringify(process.env.NODE_ENV)
// include: 'src/maths.js', // 指定可以使用变量的文件路径
// exclude: 'node_modules/**',
// ENV: JSON.stringify(process.env.NODE_ENV || 'development'),
// HOST: JSON.stringify('http://111/111')
// }),
],
output: [{
dir: path.resolve(__dirname, 'dist'),
format: 'umd', // amd, cjs, es, iife, umd, system
name: 'melotsdk',
entryFileNames: '[name].umd.js',
chunkFileNames: '[name].umd.js',
//compact: false,
//extend: false,
//sourcemap: false,
},{
dir: path.resolve(__dirname, 'dist'),
format: 'cjs', // amd, cjs, es, iife, umd, system
name: 'melotsdk',
entryFileNames: '[name].cjs.js',
chunkFileNames: '[name].cjs.js',
//compact: false,
//extend: false,
//sourcemap: false,
},{
dir: path.resolve(__dirname, 'dist'),
format: 'es', // amd, cjs, es, iife, umd, system
name: 'melotsdk',
entryFileNames: '[name].es.js',
chunkFileNames: '[name].es.js',
//compact: false,
//extend: false,
//sourcemap: false,
}
]
}
const DEV_BUILD_CONFIG = {
input: {
index: path.resolve(__dirname, './src/index.js'),
},
plugins: [
builtins(),
resolve({
mainFields: ['module', 'main'],
browser: true, // 适配需要加载browser 模块的包
//jsnext: true, // 该属性是指定将Node包转换为ES2015模块
// main 和 browser 属性将使插件决定将那些文件应用到bundle中
//main: true, // Default: true
}),
json(),
common({
include: 'node_modules/**', // 包括
exclude: [], // 排除
extensions: ['.js', '.ts']
}),
replace({
'process.env.NODE_ENV': JSON.stringify(process.env.NODE_ENV)
}),
babel({
exclude: 'node_modules/**' // 只转译我们的源代码
}),
],
output: [{
dir: path.resolve(__dirname, 'dist'),
format: 'umd', // amd, cjs, es, iife, umd, system
name: 'melotsdk',
entryFileNames: '[name].js',
chunkFileNames: '[name].js',
// compact: false,
// extend: false,
// sourcemap: false,
}
],
treeshake: {
moduleSideEffects: true
},
}
const PROD_BUILD_TASK = {
input: {
index: path.resolve(__dirname, './src/index.js'),
},
plugins: [
builtins(),
resolve({
mainFields: ['module', 'main'],
browser: true, // 适配需要加载browser 模块的包
}),
json(),
common({
include: 'node_modules/**', // 包括
exclude: [], // 排除
extensions: ['.js', '.ts']
}),
replace({
'process.env.NODE_ENV': JSON.stringify(process.env.NODE_ENV)
}),
babel({
exclude: 'node_modules/**' // 只转译我们的源代码
}),
terser({
output: {
comments: false
},
include: [/^.+\.js$/],
exclude: ['node_moudles/**'],
numWorkers: cpuNums,
sourcemap: false
}),
],
output: {
dir: path.resolve(__dirname, 'dist'),
format: 'umd',
name: 'melotsdk',
entryFileNames: '[name].min.js',
chunkFileNames: '[name].min..js',
compact: false,
extend: false,
sourcemap: false,
},
treeshake: {
moduleSideEffects: true
},
}
//NODEJS_BUILD_CONFIG,
export default [ DEV_BUILD_CONFIG, PROD_BUILD_TASK];