Skip to content

Commit edea853

Browse files
frehnermjc1283
andauthored
build: adds umd and system build targets (#80)
Summary: - Adds umd and system build targets - Makes umd + system builds work correctly with dependencies - Upgraded rollup and various plugins to the latest versions; otherwise the build wouldn't work because of various cjs interop issues Co-authored-by: Matt Carroll <[email protected]>
1 parent 891fee6 commit edea853

File tree

4 files changed

+140
-300
lines changed

4 files changed

+140
-300
lines changed

package.json

+5-5
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,9 @@
3838
"react": ">=16.8.0"
3939
},
4040
"devDependencies": {
41+
"@rollup/plugin-commonjs": "^16.0.0",
42+
"@rollup/plugin-node-resolve": "^10.0.0",
43+
"@rollup/plugin-replace": "^2.3.4",
4144
"@types/enzyme": "^3.1.15",
4245
"@types/enzyme-adapter-react-16": "^1.0.3",
4346
"@types/hoist-non-react-statics": "^3.3.1",
@@ -58,11 +61,8 @@
5861
"prettier": "1.19.1",
5962
"react": "^16.8.0",
6063
"react-dom": "^16.8.0",
61-
"rollup": "^1.1.0",
62-
"rollup-plugin-commonjs": "^9.2.0",
63-
"rollup-plugin-node-resolve": "^4.0.0",
64-
"rollup-plugin-replace": "^2.1.0",
65-
"rollup-plugin-typescript2": "^0.18.1",
64+
"rollup": "^2.32.1",
65+
"rollup-plugin-typescript2": "^0.28.0",
6666
"rollup-plugin-uglify": "^6.0.4",
6767
"ts-jest": "^26.4.1",
6868
"tslib": "^1.9.3",

scripts/build.js

+8
Original file line numberDiff line numberDiff line change
@@ -37,3 +37,11 @@ exec(`./node_modules/.bin/rollup -c scripts/config.js -f es -o dist/${packageNam
3737
console.log("\nBuilding CommonJS modules...");
3838

3939
exec(`./node_modules/.bin/rollup -c scripts/config.js -f cjs -o dist/${packageName}.js`);
40+
41+
console.log("\nBuilding UMD modules...");
42+
43+
exec(`./node_modules/.bin/rollup -c scripts/config.js -f umd -o dist/${packageName}.umd.js --name ${umdName}`, {EXTERNALS: 'forBrowsers', BUILD_ENV: 'production' });
44+
45+
console.log("\nBuilding SystemJS modules...");
46+
47+
exec(`./node_modules/.bin/rollup -c scripts/config.js -f system -o dist/${packageName}.system.js`, {EXTERNALS: 'forBrowsers', BUILD_ENV: 'production' });

scripts/config.js

+11-7
Original file line numberDiff line numberDiff line change
@@ -15,26 +15,30 @@
1515
*/
1616

1717
const typescript = require('rollup-plugin-typescript2')
18-
const commonjs = require('rollup-plugin-commonjs')
19-
const replace = require('rollup-plugin-replace')
20-
const resolve = require('rollup-plugin-node-resolve')
18+
const commonjs = require('@rollup/plugin-commonjs')
19+
const replace = require('@rollup/plugin-replace')
20+
const { nodeResolve } = require('@rollup/plugin-node-resolve')
2121
const { uglify } = require('rollup-plugin-uglify')
2222

2323
const packageDeps = require('../package.json').dependencies || {}
2424
const packagePeers = require('../package.json').peerDependencies || {}
2525

2626
function getExternals(externals) {
27+
if(externals === 'forBrowsers') {
28+
return ['react']
29+
}
2730
return externals === 'peers'
2831
? Object.keys(packagePeers)
2932
: Object.keys(packageDeps).concat(Object.keys(packagePeers))
3033
}
3134

32-
function getPlugins(env) {
35+
function getPlugins(env, externals) {
3336
const plugins = [
34-
resolve(),
37+
nodeResolve({
38+
browser: externals === 'forBrowsers',
39+
}),
3540
commonjs({
3641
include: /node_modules/,
37-
namedExports: { '@optimizely/js-sdk-logging': ['getLogger'] },
3842
}),
3943
]
4044

@@ -63,7 +67,7 @@ const config = {
6367
},
6468
},
6569
external: getExternals(process.env.EXTERNALS),
66-
plugins: getPlugins(process.env.BUILD_ENV),
70+
plugins: getPlugins(process.env.BUILD_ENV, process.env.EXTERNALS),
6771
}
6872

6973
module.exports = config

0 commit comments

Comments
 (0)