From d3e235981baea5c378aed771e867f2cb421d7d05 Mon Sep 17 00:00:00 2001 From: Federico Zivolo Date: Thu, 5 Apr 2018 11:37:20 +0200 Subject: [PATCH] build: simplified build, and ship cjs in lib --- .babelrc | 6 +++++ .prettierignore | 1 + package.json | 18 ++++++------- rollup.config.js | 67 ++++++++++++++++++++++++++++++++++-------------- 4 files changed, 63 insertions(+), 29 deletions(-) create mode 100644 .prettierignore diff --git a/.babelrc b/.babelrc index cd9d94e..531daa2 100644 --- a/.babelrc +++ b/.babelrc @@ -4,6 +4,12 @@ "env": { "test": { "presets": ["env", "stage-1", "react"] + }, + "es": { + "presets": [["env", { "modules": false }], "stage-1", "react"] + }, + "cjs": { + "presets": [["env", { "modules": "commonjs" }], "stage-1", "react"] } } } diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 0000000..ec6d3cd --- /dev/null +++ b/.prettierignore @@ -0,0 +1 @@ +package.json diff --git a/package.json b/package.json index e45beaf..bdf2eb1 100644 --- a/package.json +++ b/package.json @@ -5,9 +5,9 @@ "license": "MIT", "author": "Travis Arnold (http://souporserious.com)", "homepage": "https://github.com/souporserious/react-popper", - "main": "dist/react-popper.js", - "umd:main": "dist/react-popper.umd.js", - "module": "lib/index.js", + "main": "lib/cjs/index.js", + "module": "lib/es/index.js", + "browser": "dist/react-popper.js", "typings": "typings/react-popper.d.ts", "files": [ "dist", @@ -15,14 +15,12 @@ "typings/react-popper.d.ts" ], "scripts": { - "build": "npm run build:clean && npm run build:es && npm run build:umd && npm run build:cjs && npm run build:flow && npm run build:umd-min && npm run build:cjs-min", + "build": "npm run build:clean && npm run build:es && npm run build:cjs && npm run build:browser && npm run build:flow", "build:clean": "rimraf dist/ && rimraf lib/", - "build:es": "babel src --ignore '*.test.js,__mocks__' --out-dir lib", - "build:umd": "rollup -c --output.format umd --output.name 'react-popper' --output.file dist/react-popper.umd.js", - "build:cjs": "rollup -c --output.format cjs --output.name 'react-popper' --output.file dist/react-popper.js", - "build:flow": "flow-copy-source --ignore '{__mocks__/*,*.test}.js' src lib", - "build:umd-min": "MINIFY=true rollup -c --output.format umd --output.name 'react-popper' --output.file dist/react-popper.umd.min.js", - "build:cjs-min": "MINIFY=true rollup -c --output.format cjs --output.name 'react-popper' --output.file dist/react-popper.min.js", + "build:es": "BABEL_ENV=es babel src --ignore '*.test.js,__mocks__' --out-dir lib/es", + "build:cjs": "BABEL_ENV=cjs babel src --ignore '*.test.js,__mocks__' --out-dir lib/cjs", + "build:browser": "rollup -c", + "build:flow": "flow-copy-source --ignore '{__mocks__/*,*.test}.js' src lib/es", "demo": "parcel --out-dir demo/dist demo/index.html", "test": "npm run test:eslint && npm run test:flow && npm run test:ts && npm run test:jest", "test:ts": "tsc --project ./typings/tests", diff --git a/rollup.config.js b/rollup.config.js index adab84d..07a792e 100644 --- a/rollup.config.js +++ b/rollup.config.js @@ -1,26 +1,55 @@ import babel from 'rollup-plugin-babel'; import minify from 'rollup-plugin-babel-minify'; -export default { +const common = { input: 'src/index.js', + external: [ + 'react', + 'react-dom', + 'popper.js', + 'create-react-context', + 'warning', + ], +}; + +const commonOutput = { + name: 'react-popper', + sourcemap: true, + globals: { + react: 'react', + 'prop-types': 'PropTypes', + 'popper.js': 'PopperJS', + 'create-react-context': 'createContext', + warning: 'warning', + }, +}; + +const babelConfig = { + babelrc: false, + presets: [['env', { modules: false }], 'stage-1', 'react'], plugins: [ - babel({ - babelrc: false, - presets: [['env', { modules: false }], 'stage-1', 'react'], - plugins: [ - 'external-helpers', - ['transform-react-remove-prop-types', { mode: 'wrap' }], - ], - }), - process.env.MINIFY ? minify() : false, - ].filter(Boolean), - external: ['react', 'react-dom', 'prop-types', 'popper.js'], - output: { - sourcemap: true, - globals: { - react: 'react', - 'prop-types': 'PropTypes', - 'popper.js': 'PopperJS', + 'external-helpers', + ['transform-react-remove-prop-types', { mode: 'wrap' }], + ], +}; + +export default [ + { + ...common, + plugins: [babel(babelConfig)], + output: { + ...commonOutput, + format: 'umd', + file: 'dist/react-popper.js', }, }, -}; + { + ...common, + plugins: [babel(babelConfig), minify()], + output: { + ...commonOutput, + format: 'umd', + file: 'dist/react-popper.min.js', + }, + }, +];