From 28bb03276576aace6bad1bfc62918e5e823c64ea Mon Sep 17 00:00:00 2001 From: Brenton Simpson Date: Wed, 12 Dec 2018 21:30:04 -0800 Subject: [PATCH] Add `unpkg` key to package.json This provides a completely bundled distribution, ready importing from CDNs like unpkg.com for use in sandboxes like Codepen. It allows this code to work: ```typescript import { create as createJSS } from 'https://unpkg.com/jss'; ``` The PR is a work-in-progress, but I'd rather start a conversation with an example than with prose. As it is, I can't get `sizeSnapshot` to work with the bundled version. I also wonder how best to handle plugins/presets. The easiest options would be to add `unpkg` entry points to each `package`, and force authors to use multiple imports: ```typescript import { create as createJSS } from 'https://unpkg.com/jss'; import createDefaultJSSPreset from 'https://unpkg.com/jss-preset-default'; ``` I wonder what the best way to produce a batteries-included bundle is. Perhaps there should be another bundle `jss-all` that exports all the other packages. Then usage would be: ```typescript import * as jssAll from 'https://unpkg.com/jss-all'; const jss = jssAll.create(jssAll.preset()); ``` --- packages/jss-preset-default/package.json | 1 + packages/jss/package.json | 1 + rollup.config.js | 17 +++++++++++++++++ 3 files changed, 19 insertions(+) diff --git a/packages/jss-preset-default/package.json b/packages/jss-preset-default/package.json index b9513c524..92aa4c270 100644 --- a/packages/jss-preset-default/package.json +++ b/packages/jss-preset-default/package.json @@ -6,6 +6,7 @@ "homepage": "https://cssinjs.org/jss-preset-default", "main": "dist/jss-preset-default.cjs.js", "module": "dist/jss-preset-default.esm.js", + "unpkg": "dist/jss-preset-default.bundle.js", "typings": "./src/index.d.ts", "author": { "name": "Oleg Slobodskoi", diff --git a/packages/jss/package.json b/packages/jss/package.json index 25fc2178f..8eff25179 100644 --- a/packages/jss/package.json +++ b/packages/jss/package.json @@ -6,6 +6,7 @@ "homepage": "https://cssinjs.org/", "main": "dist/jss.cjs.js", "module": "dist/jss.esm.js", + "unpkg": "dist/jss.bundle.js", "typings": "./src/index.d.ts", "author": { "name": "Oleg Slobodskoi", diff --git a/rollup.config.js b/rollup.config.js index d9dd86001..3d0fac8d8 100644 --- a/rollup.config.js +++ b/rollup.config.js @@ -135,5 +135,22 @@ export default [ replace({'process.env.VERSION': JSON.stringify(pkg.version)}), sizeSnapshot(snapshotOptions) ] + }, + + { + input, + output: {file: pkg.unpkg, format: 'esm'}, + plugins: [ + nodeResolve(), + babel(getBabelOptions({useESModules: true})), + commonjs(commonjsOptions), + nodeGlobals({process: false}), + replace({ + 'process.env.VERSION': JSON.stringify(pkg.version) + }) + // sizeSnapshot barfs with + // [!] (size-snapshot plugin) Error: Error transforming bundle with 'size-snapshot' plugin: ModuleNotFoundError: Module not found: Error: Can't resolve 'jss/node_modules/rollup-plugin-size-snapshot/node_modules/webpack/buildin/harmony-module.js' in '/' + // sizeSnapshot(snapshotOptions), + ] } ]