From 6fc1182787b28a7e373de797cf0c359ea760fd4b Mon Sep 17 00:00:00 2001
From: Pau Marfany
Date: Tue, 30 Apr 2019 13:16:10 +0200
Subject: [PATCH] Output ESM build, and make module tree-shakeable (@unindented
in #202)
---
.babelrc | 22 +++++++++++++++-------
.eslintignore | 1 +
.eslintrc | 5 +++++
.gitignore | 4 +++-
.jestrc => .jestrc.json | 0
package.json | 34 +++++++++++++++++++---------------
src/createAll.js | 15 ---------------
src/immutable.js | 26 +++++++++-----------------
src/index.js | 28 ++++++++++------------------
src/seamless-immutable.js | 26 +++++++++-----------------
10 files changed, 71 insertions(+), 90 deletions(-)
rename .jestrc => .jestrc.json (100%)
delete mode 100644 src/createAll.js
diff --git a/.babelrc b/.babelrc
index bb7dd964..9e3ca29c 100644
--- a/.babelrc
+++ b/.babelrc
@@ -1,10 +1,18 @@
{
"presets": [
- "es2015",
- "react",
- "stage-1"
+ "@babel/preset-env",
+ "@babel/preset-react"
],
- "plugins": [
- "rewire"
- ]
-}
+ "env": {
+ "esm": {
+ "presets": [
+ ["@babel/preset-env", { "modules": false }]
+ ]
+ },
+ "test": {
+ "plugins": [
+ "rewire"
+ ]
+ }
+ }
+}
\ No newline at end of file
diff --git a/.eslintignore b/.eslintignore
index 7978a502..a532c869 100644
--- a/.eslintignore
+++ b/.eslintignore
@@ -1,3 +1,4 @@
examples/*
+esm/*
lib/*
umd/*
diff --git a/.eslintrc b/.eslintrc
index 753a7223..6fec7fa2 100644
--- a/.eslintrc
+++ b/.eslintrc
@@ -18,5 +18,10 @@
2,
"never"
]
+ },
+ "settings": {
+ "react": {
+ "version": "16.0"
+ }
}
}
\ No newline at end of file
diff --git a/.gitignore b/.gitignore
index 0feb6615..e7619727 100644
--- a/.gitignore
+++ b/.gitignore
@@ -2,6 +2,8 @@
*.log
*.swp
node_modules
+esm
lib
umd
-.idea
\ No newline at end of file
+.idea
+package-lock.json
\ No newline at end of file
diff --git a/.jestrc b/.jestrc.json
similarity index 100%
rename from .jestrc
rename to .jestrc.json
diff --git a/package.json b/package.json
index 628f98b4..b87562f2 100644
--- a/package.json
+++ b/package.json
@@ -3,23 +3,27 @@
"version": "5.0.1",
"description": "A Redux binding for React Router v4",
"main": "lib/index.js",
+ "module": "esm/index.js",
"types": "./index.d.ts",
+ "sideEffects": false,
"author": "Supasate Choochaisri",
"license": "MIT",
"files": [
"*.md",
"*.js",
"*.ts",
+ "esm",
"lib",
"umd"
],
"scripts": {
+ "build:esm": "BABEL_ENV=esm babel src --out-dir esm",
"build:commonjs": "BABEL_ENV=commonjs babel src --out-dir lib",
"build:umd": "NODE_ENV=development webpack src/index.js umd/ConnectedReactRouter.js",
"build:umd:min": "NODE_ENV=production webpack -p src/index.js umd/ConnectedReactRouter.min.js",
- "build": "npm run build:commonjs & npm run build:umd & npm run build:umd:min",
+ "build": "npm run build:esm & npm run build:commonjs & npm run build:umd & npm run build:umd:min",
"lint": "eslint .",
- "test": "jest --config ./.jestrc",
+ "test": "jest --config ./.jestrc.json",
"test:watch": "npm run test -- --watch",
"posttest": "npm run lint"
},
@@ -35,25 +39,25 @@
"redux": "^3.6.0 || ^4.0.0"
},
"devDependencies": {
+ "@babel/cli": "^7.1.5",
+ "@babel/core": "^7.1.5",
+ "@babel/preset-env": "^7.1.5",
+ "@babel/preset-react": "^7.0.0",
"@types/history": "^4.5.0",
"@types/react": "*",
- "babel-cli": "^6.18.0",
- "babel-core": "^6.20.0",
- "babel-eslint": "^7.1.1",
- "babel-jest": "^17.0.2",
- "babel-loader": "^6.3.1",
- "babel-plugin-rewire": "^1.0.0",
- "babel-preset-es2015": "^6.18.0",
- "babel-preset-react": "^6.16.0",
- "babel-preset-stage-1": "^6.16.0",
+ "babel-core": "7.0.0-bridge.0",
+ "babel-eslint": "^10.0.1",
+ "babel-jest": "^23.6.0",
+ "babel-loader": "^8.0.4",
+ "babel-plugin-rewire": "^1.2.0",
"babel-template": "^6.2.0",
"babel-types": "^6.2.0",
"enzyme": "3.1.1",
"enzyme-adapter-react-16": "^1.0.4",
- "eslint": "^3.12.0",
- "eslint-plugin-import": "^2.2.0",
- "eslint-plugin-react": "^6.8.0",
- "jest": "^17.0.2",
+ "eslint": "^5.9.0",
+ "eslint-plugin-import": "^2.14.0",
+ "eslint-plugin-react": "^7.11.1",
+ "jest": "^23.6.0",
"prop-types": "^15.5.8",
"raf": "^3.4.0",
"react": "^16.0.0",
diff --git a/src/createAll.js b/src/createAll.js
deleted file mode 100644
index ff47c7da..00000000
--- a/src/createAll.js
+++ /dev/null
@@ -1,15 +0,0 @@
-import * as actions from './actions'
-import createConnectedRouter from './ConnectedRouter'
-import createConnectRouter from './reducer'
-import routerMiddleware from './middleware'
-import createSelectors from './selectors'
-
-const createAll = structure => ({
- ...actions,
- ...createSelectors(structure),
- ConnectedRouter: createConnectedRouter(structure),
- connectRouter: createConnectRouter(structure),
- routerMiddleware,
-})
-
-export default createAll
diff --git a/src/immutable.js b/src/immutable.js
index c93acfdc..0e50d5e7 100644
--- a/src/immutable.js
+++ b/src/immutable.js
@@ -1,19 +1,11 @@
-import createAll from './createAll'
+import createConnectedRouter from "./ConnectedRouter"
+import createConnectRouter from "./reducer"
+import createSelectors from "./selectors"
import immutableStructure from './structure/immutable'
-export const {
- LOCATION_CHANGE,
- CALL_HISTORY_METHOD,
- push,
- replace,
- go,
- goBack,
- goForward,
- routerActions,
- ConnectedRouter,
- connectRouter,
- routerMiddleware,
- getLocation,
- getAction,
- createMatchSelector,
-} = createAll(immutableStructure)
+export { LOCATION_CHANGE, CALL_HISTORY_METHOD, push, replace, go, goBack, goForward, routerActions } from "./actions"
+export { default as routerMiddleware } from "./middleware"
+
+export const ConnectedRouter = /*#__PURE__*/ createConnectedRouter(immutableStructure)
+export const connectRouter = /*#__PURE__*/ createConnectRouter(immutableStructure)
+export const { getLocation, getAction, createMatchSelector } = /*#__PURE__*/ createSelectors(immutableStructure)
\ No newline at end of file
diff --git a/src/index.js b/src/index.js
index 0927fa44..6812d163 100644
--- a/src/index.js
+++ b/src/index.js
@@ -1,19 +1,11 @@
-import createAll from './createAll'
-import plainStructure from './structure/plain'
+import createConnectedRouter from "./ConnectedRouter"
+import createConnectRouter from "./reducer"
+import createSelectors from "./selectors"
+import plainStructure from "./structure/plain"
-export const {
- LOCATION_CHANGE,
- CALL_HISTORY_METHOD,
- push,
- replace,
- go,
- goBack,
- goForward,
- routerActions,
- ConnectedRouter,
- connectRouter,
- routerMiddleware,
- getLocation,
- getAction,
- createMatchSelector,
-} = createAll(plainStructure)
+export { LOCATION_CHANGE, CALL_HISTORY_METHOD, push, replace, go, goBack, goForward, routerActions } from "./actions"
+export { default as routerMiddleware } from "./middleware"
+
+export const ConnectedRouter = /*#__PURE__*/ createConnectedRouter(plainStructure)
+export const connectRouter = /*#__PURE__*/ createConnectRouter(plainStructure)
+export const { getLocation, getAction, createMatchSelector } = /*#__PURE__*/ createSelectors(plainStructure)
\ No newline at end of file
diff --git a/src/seamless-immutable.js b/src/seamless-immutable.js
index f88bf8f2..f3a58d56 100644
--- a/src/seamless-immutable.js
+++ b/src/seamless-immutable.js
@@ -1,19 +1,11 @@
-import createAll from './createAll'
+import createConnectedRouter from "./ConnectedRouter"
+import createConnectRouter from "./reducer"
+import createSelectors from "./selectors"
import immutableStructure from './structure/seamless-immutable'
-export const {
- LOCATION_CHANGE,
- CALL_HISTORY_METHOD,
- push,
- replace,
- go,
- goBack,
- goForward,
- routerActions,
- ConnectedRouter,
- connectRouter,
- routerMiddleware,
- getLocation,
- getAction,
- createMatchSelector,
-} = createAll(immutableStructure)
+export { LOCATION_CHANGE, CALL_HISTORY_METHOD, push, replace, go, goBack, goForward, routerActions } from "./actions"
+export { default as routerMiddleware } from "./middleware"
+
+export const ConnectedRouter = /*#__PURE__*/ createConnectedRouter(immutableStructure)
+export const connectRouter = /*#__PURE__*/ createConnectRouter(immutableStructure)
+export const { getLocation, getAction, createMatchSelector } = /*#__PURE__*/ createSelectors(immutableStructure)
\ No newline at end of file