diff --git a/package.json b/package.json index e7a8fbd77..7df6c1b51 100644 --- a/package.json +++ b/package.json @@ -2,71 +2,51 @@ "name": "@optimizely/optimizely-sdk", "version": "5.3.4", "description": "JavaScript SDK for Optimizely Feature Experimentation, Optimizely Full Stack (legacy), and Optimizely Rollouts", - "module": "dist/optimizely.browser.es.js", - "main": "dist/optimizely.node.min.js", - "browser": "dist/optimizely.browser.min.js", - "react-native": "dist/optimizely.react_native.min.js", - "typings": "dist/index.browser.d.ts", + "main": "./dist/index.node.min.js", + "browser": "./dist/index.browser.es.min.js", + "react-native": "./dist/index.react_native.min.js", + "types": "./dist/index.d.ts", "exports": { ".": { + "types": "./dist/index.d.ts", "node": { - "types": "./dist/index.node.d.ts", - "default": "./dist/optimizely.node.min.js" + "import": "./dist/index.node.es.min.mjs", + "require": "./dist/index.node.min.js" }, "react-native": { - "types": "./dist/index.react_native.d.ts", - "default": "./dist/optimizely.react_native.min.js" + "import": "./dist/index.react_native.es.min.js", + "require": "./dist/index.react_native.min.js" + }, + "browser": { + "import": "./dist/index.browser.es.min.js", + "require": "./dist/index.browser.min.js" }, "default": { - "types": "./dist/index.browser.d.ts", - "require": "./dist/optimizely.browser.min.js", - "import": "./dist/optimizely.browser.es.js", - "default": "./dist/optimizely.browser.es.min.js" + "import": "./dist/index.node.es.min.mjs", + "require": "./dist/index.node.min.js" } }, "./node": { - "types": "./dist/index.node.d.ts", - "default": "./dist/optimizely.node.min.js" + "types": "./dist/index.d.ts", + "import": "./dist/index.node.es.min.mjs", + "require": "./dist/index.node.min.js" }, "./browser": { - "types": "./dist/index.browser.d.ts", - "require": "./dist/optimizely.browser.min.js", - "import": "./dist/optimizely.browser.es.js", - "default": "./dist/optimizely.browser.es.min.js" + "types": "./dist/index.d.ts", + "import": "./dist/index.browser.es.min.js", + "require": "./dist/index.browser.min.js" }, "./react_native": { - "types": "./dist/index.react_native.d.ts", - "default": "./dist/optimizely.react_native.min.js" + "types": "./dist/index.d.ts", + "default": "./dist/index.react_native.min.js", + "import": "./dist/index.react_native.es.min.js", + "require": "./dist/index.react_native.min.js" }, "./lite": { "types": "./dist/index.lite.d.ts", - "node": "./dist/optimizely.lite.min.js", - "import": "./dist/optimizely.lite.es.js", - "default": "./dist/optimizely.lite.min.js" - }, - "./dist/optimizely.lite.es": { - "types": "./dist/index.lite.d.ts", - "default": "./dist/optimizely.lite.es.js" - }, - "./dist/optimizely.lite.es.js": { - "types": "./dist/index.lite.d.ts", - "default": "./dist/optimizely.lite.es.js" - }, - "./dist/optimizely.lite.es.min": { - "types": "./dist/index.lite.d.ts", - "default": "./dist/optimizely.lite.es.min.js" - }, - "./dist/optimizely.lite.es.min.js": { - "types": "./dist/index.lite.d.ts", - "default": "./dist/optimizely.lite.es.min.js" - }, - "./dist/optimizely.lite.min": { - "types": "./dist/index.lite.d.ts", - "default": "./dist/optimizely.lite.min.js" - }, - "./dist/optimizely.lite.min.js": { - "types": "./dist/index.lite.d.ts", - "default": "./dist/optimizely.lite.min.js" + "node": "./dist/index.lite.min.js", + "import": "./dist/index.lite.es.js", + "default": "./dist/index.lite.min.js" } }, "scripts": { @@ -82,7 +62,7 @@ "test-umdbrowser": "npm run build-browser-umd && karma start karma.umd.conf.js --single-run", "test-karma-local": "karma start karma.local_chrome.bs.conf.js && npm run build-browser-umd && karma start karma.local_chrome.umd.conf.js", "prebuild": "npm run clean", - "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", + "build": "npm run genmsg && rollup -c && cp dist/index.browser.d.ts dist/index.d.ts", "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", "build-browser-umd": "rollup -c --config-umd", "coveralls": "nyc --reporter=lcov npm test", diff --git a/rollup.config.js b/rollup.config.js index 68d495c9c..046cdab1e 100644 --- a/rollup.config.js +++ b/rollup.config.js @@ -48,35 +48,50 @@ const typescriptPluginOptions = { } }; -const cjsBundleFor = platform => ({ - plugins: [resolve(), commonjs(), typescript(typescriptPluginOptions)], - external: ['https', 'http', 'url'].concat(Object.keys({ ...dependencies, ...peerDependencies } || {})), - input: `lib/index.${platform}.ts`, - output: { - exports: 'named', - format: 'cjs', - file: `dist/optimizely.${platform}.min.js`, - plugins: [terser()], - sourcemap: true, - }, -}); +const cjsBundleFor = (platform, opt = {}) => { + const { minify, ext } = { + minify: true, + ext: '.js', + ...opt, + }; -const esmBundleFor = platform => ({ - ...cjsBundleFor(platform), - output: [ - { - format: 'es', - file: `dist/optimizely.${platform}.es.js`, - sourcemap: true, - }, - { - format: 'es', - file: `dist/optimizely.${platform}.es.min.js`, - plugins: [terser()], + const min = minify ? '.min' : ''; + + return { + plugins: [resolve(), commonjs(), typescript(typescriptPluginOptions)], + external: ['https', 'http', 'url'].concat(Object.keys({ ...dependencies, ...peerDependencies } || {})), + input: `lib/index.${platform}.ts`, + output: { + exports: 'named', + format: 'cjs', + file: `dist/index.${platform}${min}${ext}`, + plugins: minify ? [terser()] : undefined, sourcemap: true, }, - ], -}); + } +}; + +const esmBundleFor = (platform, opt) => { + const { minify, ext } = { + minify: true, + ext: '.js', + ...opt, + }; + + const min = minify ? '.min' : ''; + + return { + ...cjsBundleFor(platform), + output: [ + { + format: 'es', + file: `dist/index.${platform}.es${min}${ext}`, + plugins: minify ? [terser()] : undefined, + sourcemap: true, + }, + ], + } +}; const umdBundle = { plugins: [ @@ -123,11 +138,13 @@ const jsonSchemaBundle = { }; const bundles = { - 'cjs-node': cjsBundleFor('node'), - 'cjs-browser': cjsBundleFor('browser'), - 'cjs-react-native': cjsBundleFor('react_native'), + 'cjs-node-min': cjsBundleFor('node'), + 'cjs-browser-min': cjsBundleFor('browser'), + 'cjs-react-native-min': cjsBundleFor('react_native'), 'cjs-lite': cjsBundleFor('lite'), - esm: esmBundleFor('browser'), + 'esm-browser-min': esmBundleFor('browser'), + 'esm-node-min': esmBundleFor('node', { ext: '.mjs' }), + 'esm-react-native-min': esmBundleFor('react_native'), 'esm-lite': esmBundleFor('lite'), 'json-schema': jsonSchemaBundle, umd: umdBundle,