UNPKG

1.4 kBJavaScriptView Raw
1/*global Promise*/
2
3import * as p from 'path';
4import * as fs from 'fs';
5import {rollup} from 'rollup';
6import babel from 'rollup-plugin-babel';
7import commonjs from 'rollup-plugin-commonjs';
8import uglify from 'rollup-plugin-uglify';
9
10const isProduction = process.env.NODE_ENV === 'production';
11
12const entry = p.resolve('src/browser-main.js');
13const dest = p.resolve(`dist/Intl.${isProduction ? 'min.js' : 'js'}`);
14
15const bundleConfig = {
16 dest,
17 format: 'umd',
18 moduleName: 'IntlPolyfill',
19 sourceMap: true,
20 external: ['Intl'],
21};
22
23let babelConfig = JSON.parse(fs.readFileSync('src/.babelrc', 'utf8'));
24babelConfig.babelrc = false;
25babelConfig.presets = babelConfig.presets.map((preset) => {
26 return preset === 'es2015' ? 'es2015-rollup' : preset;
27});
28
29let plugins = [
30 babel(babelConfig),
31 commonjs({
32 sourceMap: true,
33 }),
34];
35
36if (isProduction) {
37 plugins.push(
38 uglify({
39 warnings: false,
40 })
41 );
42}
43
44let bundle = Promise.resolve(rollup({entry, plugins}));
45bundle.then(({write}) => write(bundleConfig)).then(() => {
46
47 // special case for locale-data/complete.js
48 const lib = fs.readFileSync(dest);
49 const complete = fs.readFileSync(p.resolve('locale-data/complete.js'));
50 fs.writeFileSync(p.resolve('dist/Intl.complete.js'), `${lib}\n${complete}`);
51
52});
53
54process.on('unhandledRejection', (reason) => {throw reason;});