[change] export ES modules by default

ES modules are the default package export. Commonjs modules are exported
from 'dist/cjs'. Modern bundlers like webpack can consume ES modules.
The addition of the `sideEffects:false` to the `package.json` helps
webpack tree-shaking modules.
This commit is contained in:
Nicolas Gallagher
2018-05-18 15:12:18 -07:00
parent 96c3f09fac
commit 004c7ce478
4 changed files with 14 additions and 5 deletions
+3 -2
View File
@@ -5,6 +5,7 @@
"scripts": { "scripts": {
"clean": "del ./packages/*/dist", "clean": "del ./packages/*/dist",
"compile": "yarn clean && cd packages/react-native-web && babel src --out-dir dist --ignore \"**/__tests__\"", "compile": "yarn clean && cd packages/react-native-web && babel src --out-dir dist --ignore \"**/__tests__\"",
"compile:commonjs": "cd packages/react-native-web && MODULES=commonjs babel src --out-dir dist/cjs --ignore \"**/__tests__\"",
"benchmarks": "cd packages/benchmarks && yarn build", "benchmarks": "cd packages/benchmarks && yarn build",
"benchmarks:release": "cd packages/benchmarks && yarn release", "benchmarks:release": "cd packages/benchmarks && yarn release",
"website": "cd website && yarn start", "website": "cd website && yarn start",
@@ -12,11 +13,11 @@
"flow": "flow", "flow": "flow",
"fmt": "find packages scripts types website -name '*.js' | grep -v -E '(node_modules|dist|vendor)' | xargs yarn fmt:cmd", "fmt": "find packages scripts types website -name '*.js' | grep -v -E '(node_modules|dist|vendor)' | xargs yarn fmt:cmd",
"fmt:cmd": "prettier --write", "fmt:cmd": "prettier --write",
"jest": "jest --config ./scripts/jest/config.js", "jest": "MODULES=commonjs jest --config ./scripts/jest/config.js",
"lint": "yarn lint:check --fix", "lint": "yarn lint:check --fix",
"lint:check": "eslint packages scripts website", "lint:check": "eslint packages scripts website",
"precommit": "lint-staged", "precommit": "lint-staged",
"prerelease": "yarn test && yarn compile", "prerelease": "yarn test && yarn compile && yarn compile:commonjs",
"release": "node ./scripts/release/publish.js", "release": "node ./scripts/release/publish.js",
"postrelease": "yarn website:release && yarn benchmarks:release", "postrelease": "yarn website:release && yarn benchmarks:release",
"test": "yarn flow && yarn lint:check && yarn jest --runInBand" "test": "yarn flow && yarn lint:check && yarn jest --runInBand"
+7 -2
View File
@@ -32,7 +32,7 @@ module.exports = {
options: { options: {
cacheDirectory: false, cacheDirectory: false,
presets: babelPreset, presets: babelPreset,
plugins: ['react-native-web', 'styled-jsx/babel'] plugins: ['styled-jsx/babel']
} }
} }
} }
@@ -43,5 +43,10 @@ module.exports = {
analyzerMode: 'static', analyzerMode: 'static',
openAnalyzer: false openAnalyzer: false
}) })
] ],
resolve: {
alias: {
'react-native': 'react-native-web'
}
}
}; };
+3 -1
View File
@@ -2,7 +2,9 @@
"name": "react-native-web", "name": "react-native-web",
"version": "0.6.1", "version": "0.6.1",
"description": "React Native for Web", "description": "React Native for Web",
"main": "dist/index.js", "module": "dist/index.js",
"main": "dist/cjs/index.js",
"sideEffects": false,
"files": [ "files": [
"dist", "dist",
"jest", "jest",
+1
View File
@@ -4,6 +4,7 @@ module.exports = {
'babel-preset-env', 'babel-preset-env',
{ {
loose: true, loose: true,
modules: process.env.MODULES || false,
exclude: ['transform-es2015-typeof-symbol'], exclude: ['transform-es2015-typeof-symbol'],
targets: { targets: {
browsers: [ browsers: [