1 |
|
2 |
|
3 | const fs = require('fs')
|
4 | const rollup = require('rollup')
|
5 | const uglifyjs = require('uglify-js')
|
6 | const rollupConfig = require('./rollup.config.js')
|
7 | const rc = {
|
8 | input: rollupConfig.input,
|
9 | plugins: rollupConfig.plugins
|
10 | }
|
11 |
|
12 | let targets = rollupConfig.targets ? rollupConfig.targets.map(target => ({
|
13 | format: target.format,
|
14 | file: target.file
|
15 | })) : [{
|
16 | format: rollupConfig.format,
|
17 | file: rollupConfig.file
|
18 | }]
|
19 |
|
20 | const noBannerFormats = {'cjs': !0, 'es': !0}
|
21 | targets.forEach(function (target) {
|
22 | target.banner = noBannerFormats[target.format] ? '' : this.banner
|
23 | target.name = this.name
|
24 | target.sourcemap = this.sourcemap
|
25 | }, rollupConfig)
|
26 |
|
27 |
|
28 |
|
29 |
|
30 |
|
31 |
|
32 | function minify (code) {
|
33 | let minifyOptions = {
|
34 | fromString: true
|
35 | }
|
36 | let result = uglifyjs.minify(code, minifyOptions)
|
37 | return result.code
|
38 | }
|
39 |
|
40 | rollup.rollup(rc).then(bundle => {
|
41 |
|
42 | targets.forEach(target => {
|
43 | bundle.generate(target).then(({code, map}) => {
|
44 |
|
45 | fs.writeFileSync(target.file, code)
|
46 |
|
47 |
|
48 | if (target.minimize) {
|
49 | let minMain = target.file.replace(/(?=\.js$)/, '.min')
|
50 | minMain === target.file && (minMain += '.min')
|
51 | fs.writeFileSync(minMain, target.banner + minify(code))
|
52 | }
|
53 | })
|
54 | })
|
55 |
|
56 |
|
57 |
|
58 |
|
59 | }).catch(e => {
|
60 | process.stderr.write(e.message + '\n')
|
61 | process.exit(1)
|
62 | }) |
\ | No newline at end of file |