-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathrollup.config.js
84 lines (73 loc) · 2 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
// Plugins
import pkg from './package.json'
import { terser } from 'rollup-plugin-terser'
import { babel } from '@rollup/plugin-babel'
// Configs
const configs = {
name: pkg.name,
files: ['Toast.js'],
formats: ['es', 'iife'], //, 'iife' 'es', 'amd', 'cjs'
default: 'es',
pathIn: 'src/',
pathOut: 'dist/',
minify: true,
sourcemap: true,
plugins: [babel({ babelHelpers: 'bundled' })],
presets: ['@babel/preset-env']
}
// Banner
const banner = `/* ! @preserve ${configs.name ? configs.name : pkg.name} v${
pkg.version
} | (c) ${new Date().getFullYear()} ${pkg.author} | ${pkg.license} | ${
pkg.repository.url
} */`
const createOutput = function (filename, minify) {
return configs.formats.map(function (format) {
const output = {
file: `${configs.pathOut}/${filename}${
format === configs.default ? '' : `.${format}`
}${minify ? '.min' : ''}.js`,
name: pkg.name,
format,
banner
}
if (format === 'iife') {
output.name = configs.name ? configs.name : pkg.name
output.name = output.name.trim().replace(/\W+/g, '_')
}
if (minify) {
output.plugins = [terser()]
}
output.sourcemap = configs.sourcemap
return output
})
}
/**
* Create output formats
* @param {String} filename The filename
* @return {Array} The outputs array
*/
const createOutputs = function (filename) {
// Create base outputs
const outputs = createOutput(filename)
// If not minifying, return outputs
if (!configs.minify) return outputs
// Otherwise, ceate second set of outputs
const outputsMin = createOutput(filename, true)
// Merge and return the two arrays
return outputs.concat(outputsMin)
}
/**
* Create export object
* @return {Array} The export object
*/
const createExport = function (file) {
return configs.files.map(function (file) {
const filename = file.replace('.js', '')
return {
input: `${configs.pathIn}/${file}`,
output: createOutputs(filename)
}
})
}
export default createExport()