Skip to content

Commit 4344a22

Browse files
authored
fix: provide browser versions independent from module system (#380)
Fixes #378 Currently main field is used for node and module for browser build. This is not entierly correct. Webpack can be used to build node apps. Though module is always preferred over main. For browser versions there is a special field. In this diff I added esm support for both node and browser. rollup-plugin-node-resolve look at browser field as well and prefer it to bundle umd. https://webpack.js.org/configuration/resolve/#resolvemainfields https://github.com/rollup/plugins/tree/master/packages/node-resolve#browser https://github.com/defunctzombie/package-browser-field-spec
1 parent 412a6ae commit 4344a22

File tree

5 files changed

+80
-5
lines changed

5 files changed

+80
-5
lines changed

examples/browser-rollup/rollup.config.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
const resolve = require('rollup-plugin-node-resolve');
22
const { terser } = require('rollup-plugin-terser');
33

4-
const plugins = [resolve(), terser()];
4+
const plugins = [resolve({ browser: true }), terser()];
55
module.exports = [
66
{
77
input: './example-all.js',

package-lock.json

Lines changed: 62 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,13 @@
1818
},
1919
"sideEffects": false,
2020
"main": "dist/index.js",
21-
"module": "dist/esm-browser/index.js",
21+
"module": "dist/esm-node/index.js",
22+
"browser": {
23+
"./dist/md5.js": "./dist/md5-browser.js",
24+
"./dist/rng.js": "./dist/rng-browser.js",
25+
"./dist/sha1.js": "./dist/sha1-browser.js",
26+
"./dist/esm-node/index.js": "./dist/esm-browser/index.js"
27+
},
2228
"files": [
2329
"CHANGELOG.md",
2430
"CONTRIBUTING.md",
@@ -36,6 +42,7 @@
3642
"@babel/preset-env": "7.8.4",
3743
"@commitlint/cli": "8.3.5",
3844
"@commitlint/config-conventional": "8.3.4",
45+
"@rollup/plugin-node-resolve": "7.1.1",
3946
"babel-eslint": "10.0.3",
4047
"babel-plugin-add-module-exports": "1.0.2",
4148
"browserstack-local": "1.4.5",

rollup.config.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import nodeResolve from '@rollup/plugin-node-resolve';
12
import { terser } from 'rollup-plugin-terser';
23

34
function chunk(input, name) {
@@ -9,7 +10,7 @@ function chunk(input, name) {
910
name,
1011
compact: true,
1112
},
12-
plugins: [terser()],
13+
plugins: [nodeResolve({ browser: true }), terser()],
1314
};
1415
}
1516

scripts/build.sh

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,17 @@ mkdir -p "$DIR"
1414
# Transpile CommonJS versions of files
1515
babel --env-name commonjs src --source-root src --out-dir "$DIR" --copy-files --quiet
1616

17-
# Transpile ESM versions of files for the browser
17+
# Transpile ESM versions of files for browser
1818
babel --env-name esm src --source-root src --out-dir "$DIR/esm-browser" --copy-files --quiet
1919

20+
# Transpile ESM versions of files for node
21+
babel --env-name esm src --source-root src --out-dir "$DIR/esm-node" --copy-files --quiet
22+
2023
# No need to have the CLI files in the esm build
2124
rm -rf "$DIR/esm-browser/bin"
2225
rm -rf "$DIR/esm-browser/uuid-bin.js"
26+
rm -rf "$DIR/esm-node/bin"
27+
rm -rf "$DIR/esm-node/uuid-bin.js"
2328

2429
for FILE in "$DIR"/esm-browser/*-browser.js
2530
do
@@ -28,7 +33,7 @@ do
2833
done
2934

3035
echo "Removing browser-specific files from esm-node"
31-
rm -f "$DIR"/*-browser.js
36+
rm -f "$DIR"/esm-node/*-browser.js
3237

3338
# UMD Build
3439
mkdir "$DIR/umd"

0 commit comments

Comments
 (0)