Skip to content

Commit b00a6c7

Browse files
committed
[FSSDK-10992] refactor build and export map
1 parent fd16fb5 commit b00a6c7

File tree

2 files changed

+76
-79
lines changed

2 files changed

+76
-79
lines changed

package.json

Lines changed: 29 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -2,71 +2,51 @@
22
"name": "@optimizely/optimizely-sdk",
33
"version": "5.3.4",
44
"description": "JavaScript SDK for Optimizely Feature Experimentation, Optimizely Full Stack (legacy), and Optimizely Rollouts",
5-
"module": "dist/optimizely.browser.es.js",
6-
"main": "dist/optimizely.node.min.js",
7-
"browser": "dist/optimizely.browser.min.js",
8-
"react-native": "dist/optimizely.react_native.min.js",
9-
"typings": "dist/index.browser.d.ts",
5+
"main": "./dist/index.node.min.js",
6+
"browser": "./dist/index.browser.es.min.js",
7+
"react-native": "./dist/index.react_native.min.js",
8+
"types": "./dist/index.d.ts",
109
"exports": {
1110
".": {
11+
"types": "./dist/index.d.ts",
1212
"node": {
13-
"types": "./dist/index.node.d.ts",
14-
"default": "./dist/optimizely.node.min.js"
13+
"import": "./dist/index.node.es.min.mjs",
14+
"require": "./dist/index.node.min.js"
1515
},
1616
"react-native": {
17-
"types": "./dist/index.react_native.d.ts",
18-
"default": "./dist/optimizely.react_native.min.js"
17+
"import": "./dist/index.react_native.es.min.js",
18+
"require": "./dist/index.react_native.min.js"
19+
},
20+
"browser": {
21+
"import": "./dist/index.browser.es.min.js",
22+
"require": "./dist/index.browser.min.js"
1923
},
2024
"default": {
21-
"types": "./dist/index.browser.d.ts",
22-
"require": "./dist/optimizely.browser.min.js",
23-
"import": "./dist/optimizely.browser.es.js",
24-
"default": "./dist/optimizely.browser.es.min.js"
25+
"import": "./dist/index.node.es.min.mjs",
26+
"require": "./dist/index.node.min.js"
2527
}
2628
},
2729
"./node": {
28-
"types": "./dist/index.node.d.ts",
29-
"default": "./dist/optimizely.node.min.js"
30+
"types": "./dist/index.d.ts",
31+
"import": "./dist/index.node.es.min.mjs",
32+
"require": "./dist/index.node.min.js"
3033
},
3134
"./browser": {
32-
"types": "./dist/index.browser.d.ts",
33-
"require": "./dist/optimizely.browser.min.js",
34-
"import": "./dist/optimizely.browser.es.js",
35-
"default": "./dist/optimizely.browser.es.min.js"
35+
"types": "./dist/index.d.ts",
36+
"import": "./dist/index.browser.es.min.js",
37+
"require": "./dist/index.browser.min.js"
3638
},
3739
"./react_native": {
38-
"types": "./dist/index.react_native.d.ts",
39-
"default": "./dist/optimizely.react_native.min.js"
40+
"types": "./dist/index.d.ts",
41+
"default": "./dist/index.react_native.min.js",
42+
"import": "./dist/index.react_native.es.min.js",
43+
"require": "./dist/index.react_native.min.js"
4044
},
4145
"./lite": {
4246
"types": "./dist/index.lite.d.ts",
43-
"node": "./dist/optimizely.lite.min.js",
44-
"import": "./dist/optimizely.lite.es.js",
45-
"default": "./dist/optimizely.lite.min.js"
46-
},
47-
"./dist/optimizely.lite.es": {
48-
"types": "./dist/index.lite.d.ts",
49-
"default": "./dist/optimizely.lite.es.js"
50-
},
51-
"./dist/optimizely.lite.es.js": {
52-
"types": "./dist/index.lite.d.ts",
53-
"default": "./dist/optimizely.lite.es.js"
54-
},
55-
"./dist/optimizely.lite.es.min": {
56-
"types": "./dist/index.lite.d.ts",
57-
"default": "./dist/optimizely.lite.es.min.js"
58-
},
59-
"./dist/optimizely.lite.es.min.js": {
60-
"types": "./dist/index.lite.d.ts",
61-
"default": "./dist/optimizely.lite.es.min.js"
62-
},
63-
"./dist/optimizely.lite.min": {
64-
"types": "./dist/index.lite.d.ts",
65-
"default": "./dist/optimizely.lite.min.js"
66-
},
67-
"./dist/optimizely.lite.min.js": {
68-
"types": "./dist/index.lite.d.ts",
69-
"default": "./dist/optimizely.lite.min.js"
47+
"node": "./dist/index.lite.min.js",
48+
"import": "./dist/index.lite.es.js",
49+
"default": "./dist/index.lite.min.js"
7050
}
7151
},
7252
"scripts": {
@@ -82,7 +62,7 @@
8262
"test-umdbrowser": "npm run build-browser-umd && karma start karma.umd.conf.js --single-run",
8363
"test-karma-local": "karma start karma.local_chrome.bs.conf.js && npm run build-browser-umd && karma start karma.local_chrome.umd.conf.js",
8464
"prebuild": "npm run clean",
85-
"build": "npm run genmsg && rollup -c && cp dist/index.lite.d.ts dist/optimizely.lite.es.d.ts && cp dist/index.lite.d.ts dist/optimizely.lite.es.min.d.ts && cp dist/index.lite.d.ts dist/optimizely.lite.min.d.ts",
65+
"build": "npm run genmsg && rollup -c && cp dist/index.browser.d.ts dist/index.d.ts",
8666
"build:win": "npm run genmsg && rollup -c && type nul > dist/optimizely.lite.es.d.ts && type nul > dist/optimizely.lite.es.min.d.ts && type nul > dist/optimizely.lite.min.d.ts",
8767
"build-browser-umd": "rollup -c --config-umd",
8868
"coveralls": "nyc --reporter=lcov npm test",

rollup.config.js

Lines changed: 47 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -48,35 +48,50 @@ const typescriptPluginOptions = {
4848
}
4949
};
5050

51-
const cjsBundleFor = platform => ({
52-
plugins: [resolve(), commonjs(), typescript(typescriptPluginOptions)],
53-
external: ['https', 'http', 'url'].concat(Object.keys({ ...dependencies, ...peerDependencies } || {})),
54-
input: `lib/index.${platform}.ts`,
55-
output: {
56-
exports: 'named',
57-
format: 'cjs',
58-
file: `dist/optimizely.${platform}.min.js`,
59-
plugins: [terser()],
60-
sourcemap: true,
61-
},
62-
});
51+
const cjsBundleFor = (platform, opt = {}) => {
52+
const { minify, ext } = {
53+
minify: true,
54+
ext: '.js',
55+
...opt,
56+
};
6357

64-
const esmBundleFor = platform => ({
65-
...cjsBundleFor(platform),
66-
output: [
67-
{
68-
format: 'es',
69-
file: `dist/optimizely.${platform}.es.js`,
70-
sourcemap: true,
71-
},
72-
{
73-
format: 'es',
74-
file: `dist/optimizely.${platform}.es.min.js`,
75-
plugins: [terser()],
58+
const min = minify ? '.min' : '';
59+
60+
return {
61+
plugins: [resolve(), commonjs(), typescript(typescriptPluginOptions)],
62+
external: ['https', 'http', 'url'].concat(Object.keys({ ...dependencies, ...peerDependencies } || {})),
63+
input: `lib/index.${platform}.ts`,
64+
output: {
65+
exports: 'named',
66+
format: 'cjs',
67+
file: `dist/index.${platform}${min}${ext}`,
68+
plugins: minify ? [terser()] : undefined,
7669
sourcemap: true,
7770
},
78-
],
79-
});
71+
}
72+
};
73+
74+
const esmBundleFor = (platform, opt) => {
75+
const { minify, ext } = {
76+
minify: true,
77+
ext: '.js',
78+
...opt,
79+
};
80+
81+
const min = minify ? '.min' : '';
82+
83+
return {
84+
...cjsBundleFor(platform),
85+
output: [
86+
{
87+
format: 'es',
88+
file: `dist/index.${platform}.es${min}${ext}`,
89+
plugins: minify ? [terser()] : undefined,
90+
sourcemap: true,
91+
},
92+
],
93+
}
94+
};
8095

8196
const umdBundle = {
8297
plugins: [
@@ -123,11 +138,13 @@ const jsonSchemaBundle = {
123138
};
124139

125140
const bundles = {
126-
'cjs-node': cjsBundleFor('node'),
127-
'cjs-browser': cjsBundleFor('browser'),
128-
'cjs-react-native': cjsBundleFor('react_native'),
141+
'cjs-node-min': cjsBundleFor('node'),
142+
'cjs-browser-min': cjsBundleFor('browser'),
143+
'cjs-react-native-min': cjsBundleFor('react_native'),
129144
'cjs-lite': cjsBundleFor('lite'),
130-
esm: esmBundleFor('browser'),
145+
'esm-browser-min': esmBundleFor('browser'),
146+
'esm-node-min': esmBundleFor('node', { ext: '.mjs' }),
147+
'esm-react-native-min': esmBundleFor('react_native'),
131148
'esm-lite': esmBundleFor('lite'),
132149
'json-schema': jsonSchemaBundle,
133150
umd: umdBundle,

0 commit comments

Comments
 (0)