forked from pixijs/filters
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathrollup.config.js
121 lines (112 loc) · 3.81 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
import path from 'path';
import buble from '@rollup/plugin-buble';
import resolve from '@rollup/plugin-node-resolve';
import commonjs from '@rollup/plugin-commonjs';
import { string } from 'rollup-plugin-string';
import { terser } from 'rollup-plugin-terser';
import typescript from '@rollup/plugin-typescript';
import dedupeDefaultVert from './scripts/rollup-dedupe-vert'
import getSortedPackages from './scripts/get-sorted-packages';
async function main() {
const plugins = [
typescript(),
commonjs({ preferBuiltins: true }),
resolve({ preferBuiltins: true }),
string({
include: [
'**/*.frag',
'**/*.vert'
]
}),
dedupeDefaultVert(),
buble()
];
const compiled = (new Date()).toUTCString().replace(/GMT/g, 'UTC');
const sourcemap = true;
const packages = await getSortedPackages();
const results = [];
packages.forEach((pkg) => {
const banner = [
'/*!',
` * ${pkg.name} - v${pkg.version}`,
` * Compiled ${compiled}`,
' *',
` * ${pkg.name} is licensed under the MIT License.`,
' * http://www.opensource.org/licenses/mit-license',
' */',
].join('\n');
// Get settings from package JSON
let { main, module, bundle, globals } = pkg.toJSON();
const basePath = path.relative(__dirname, pkg.location);
const input = path.join(basePath, 'src/index.ts');
const freeze = false;
results.push({
input,
output: [
{
file: path.join(basePath, main),
format: 'cjs',
freeze,
sourcemap,
banner,
},
{
file: path.join(basePath, module),
format: 'esm',
freeze,
sourcemap,
banner,
},
],
// Generate the externals to use, by default don't include dependencies
external: [
...Object.keys(pkg.dependencies || {}),
...Object.keys(pkg.peerDependencies || {})
],
plugins,
});
// The package.json file has a bundle field
// we'll use this to generate the bundle file
// this will package all dependencies
if (bundle) {
const name = '__filters';
const footer = `Object.assign(PIXI.filters, ${name});`;
globals = Object.assign({
'@pixi/core': 'PIXI',
'@pixi/math': 'PIXI',
'@pixi/settings': 'PIXI',
'@pixi/constants': 'PIXI',
'@pixi/utils': 'PIXI.utils',
'@pixi/filter-alpha': 'PIXI.filters',
'@pixi/filter-blur': 'PIXI.filters'
}, globals);
results.push({
input,
external: Object.keys(globals),
output: {
name,
banner,
globals,
file: path.join(basePath, bundle),
format: 'iife',
footer,
freeze,
sourcemap,
},
treeshake: false,
plugins: [
...plugins,
...process.env.NODE_ENV !== 'production' ? [] : [terser({
output: {
comments: function(node, comment) {
return comment.line === 1;
}
}
})]
]
});
}
});
return results;
}
export default main();