From f54d9921f6e3077e92c9714ea5cd04f48a60c82a Mon Sep 17 00:00:00 2001 From: Bogdan Chadkin Date: Fri, 23 Mar 2018 20:41:04 +0300 Subject: [PATCH 1/4] Combine UMD configs with rollup multiconfig --- package.json | 5 ++-- rollup.config.js | 60 ++++++++++++++++++++++++++++-------------------- 2 files changed, 37 insertions(+), 28 deletions(-) diff --git a/package.json b/package.json index 1e113c3eac..2fcb36c00d 100644 --- a/package.json +++ b/package.json @@ -20,10 +20,9 @@ "test": "jest", "check": "npm run lint && npm run dtslint && npm run test", "prerelease": "npm run check && npm run build", - "build": "rimraf lib && npm run build:node && npm run build:production && npm run build:development", + "build": "rimraf lib && npm run build:node && npm run build:umd", "build:node": "cross-env NODE_ENV=cjs babel ./src -d ./lib/src --source-maps && npm run build:css", - "build:development": "cross-env NODE_ENV=development rollup -c", - "build:production": "cross-env NODE_ENV=production rollup -c", + "build:umd": "rollup -c", "build:css": "postcss src/style.css --use autoprefixer -d lib/ --no-map" }, "repository": { diff --git a/rollup.config.js b/rollup.config.js index a65b9c7531..95f379e2b1 100644 --- a/rollup.config.js +++ b/rollup.config.js @@ -2,30 +2,40 @@ import babel from 'rollup-plugin-babel'; import replace from 'rollup-plugin-replace'; import uglify from 'rollup-plugin-uglify'; -const isProduction = process.env.NODE_ENV === 'production'; - -export default { - input: './src/index.js', - output: { - file: `lib/daypicker${isProduction ? '.min' : ''}.js`, - sourcemap: true, - format: 'umd', - name: 'DayPicker', - globals: { - react: 'React', +const getUMDConfig = ({ env, file }) => { + const config = { + input: './src/index.js', + output: { + file, + sourcemap: true, + format: 'umd', + name: 'DayPicker', + globals: { + react: 'React', + }, }, - }, - external: ['react'], - plugins: [ - babel({ - plugins: [ - 'external-helpers', - ['transform-react-remove-prop-types', { removeImport: true }], - ], - }), - replace({ - 'process.env.NODE_ENV': JSON.stringify('production'), - }), - isProduction ? uglify() : {}, - ], + external: ['react'], + plugins: [ + babel({ + plugins: [ + 'external-helpers', + ['transform-react-remove-prop-types', { removeImport: true }], + ], + }), + replace({ + 'process.env.NODE_ENV': JSON.stringify(env), + }), + ], + }; + + if (env === 'production') { + config.plugins.push(uglify()); + } + + return config; }; + +export default [ + getUMDConfig({ env: 'development', file: 'lib/daypicker.js' }), + getUMDConfig({ env: 'production', file: 'lib/daypicker.min.js' }), +]; From 6151a718192f303a0ec093c60f337ab41a746cd5 Mon Sep 17 00:00:00 2001 From: Bogdan Chadkin Date: Sat, 24 Mar 2018 14:01:36 +0300 Subject: [PATCH 2/4] Add size snapshot --- .size-snapshot.json | 7 +++++++ package.json | 1 + rollup.config.js | 5 +++++ yarn.lock | 43 ++++++++++++++++++++++++++++++++++++++++++- 4 files changed, 55 insertions(+), 1 deletion(-) create mode 100644 .size-snapshot.json diff --git a/.size-snapshot.json b/.size-snapshot.json new file mode 100644 index 0000000000..b2d9417f6d --- /dev/null +++ b/.size-snapshot.json @@ -0,0 +1,7 @@ +{ + "lib/daypicker.js": { + "bundled": 63454, + "minified": 28661, + "gzipped": 7798 + } +} \ No newline at end of file diff --git a/package.json b/package.json index 2fcb36c00d..464ed25cea 100644 --- a/package.json +++ b/package.json @@ -94,6 +94,7 @@ "rollup": "^0.56.2", "rollup-plugin-babel": "^3.0.3", "rollup-plugin-replace": "^2.0.0", + "rollup-plugin-size-snapshot": "^0.2.0", "rollup-plugin-uglify": "^3.0.0", "typescript": "2.7.2" }, diff --git a/rollup.config.js b/rollup.config.js index 95f379e2b1..2c70966aa3 100644 --- a/rollup.config.js +++ b/rollup.config.js @@ -1,5 +1,6 @@ import babel from 'rollup-plugin-babel'; import replace from 'rollup-plugin-replace'; +import { sizeSnapshot } from 'rollup-plugin-size-snapshot'; import uglify from 'rollup-plugin-uglify'; const getUMDConfig = ({ env, file }) => { @@ -28,6 +29,10 @@ const getUMDConfig = ({ env, file }) => { ], }; + if (env === 'development') { + config.plugins.push(sizeSnapshot()); + } + if (env === 'production') { config.plugins.push(uglify()); } diff --git a/yarn.lock b/yarn.lock index f04ce79dbc..d3ecbeda71 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1234,6 +1234,10 @@ builtin-modules@^1.0.0, builtin-modules@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" +bytes@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" + cache-base@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" @@ -1307,7 +1311,7 @@ chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0: escape-string-regexp "^1.0.5" supports-color "^4.0.0" -chalk@^2.3.1: +chalk@^2.3.1, chalk@^2.3.2: version "2.3.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.3.2.tgz#250dc96b07491bfd601e648d66ddf5f60c7a5c65" dependencies: @@ -1469,6 +1473,10 @@ commander@~2.13.0: version "2.13.0" resolved "https://registry.yarnpkg.com/commander/-/commander-2.13.0.tgz#6964bca67685df7c1f1430c584f07d7597885b9c" +commander@~2.14.1: + version "2.14.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.14.1.tgz#2235123e37af8ca3c65df45b026dbd357b01b9aa" + component-emitter@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6" @@ -1779,6 +1787,10 @@ dtslint@0.2.0: tslint "^5.4.2" typescript next +duplexer@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1" + ecc-jsbn@~0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz#0fc73a9ed5f0d53c38193398523ef7e543777505" @@ -2195,6 +2207,10 @@ fast-deep-equal@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz#96256a3bc975595eb36d82e9929d060d893439ff" +fast-deep-equal@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz#c053477817c86b51daa853c81e059b733d023614" + fast-diff@^1.1.1: version "1.1.2" resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.1.2.tgz#4b62c42b8e03de3f848460b639079920695d0154" @@ -2540,6 +2556,13 @@ growly@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081" +gzip-size@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-4.1.0.tgz#8ae096257eabe7d69c45be2b67c448124ffb517c" + dependencies: + duplexer "^0.1.1" + pify "^3.0.0" + handlebars@^4.0.3: version "4.0.10" resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.0.10.tgz#3d30c718b09a3d96f23ea4cc1f403c4d3ba9ff4f" @@ -4778,6 +4801,17 @@ rollup-plugin-replace@^2.0.0: minimatch "^3.0.2" rollup-pluginutils "^2.0.1" +rollup-plugin-size-snapshot@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/rollup-plugin-size-snapshot/-/rollup-plugin-size-snapshot-0.2.0.tgz#868db6ec0594d8baca9c2fae5017e9f125723c71" + dependencies: + bytes "^3.0.0" + chalk "^2.3.2" + fast-deep-equal "^1.1.0" + gzip-size "^4.1.0" + jest-diff "^22.4.0" + uglify-es "^3.3.9" + rollup-plugin-uglify@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/rollup-plugin-uglify/-/rollup-plugin-uglify-3.0.0.tgz#a34eca24617709c6bf1778e9653baafa06099b86" @@ -5340,6 +5374,13 @@ uglify-es@^3.3.7: commander "~2.13.0" source-map "~0.6.1" +uglify-es@^3.3.9: + version "3.3.10" + resolved "https://registry.yarnpkg.com/uglify-es/-/uglify-es-3.3.10.tgz#8b0b7992cebe20edc26de1bf325cef797b8f3fa5" + dependencies: + commander "~2.14.1" + source-map "~0.6.1" + uglify-js@^2.6: version "2.8.29" resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.8.29.tgz#29c5733148057bb4e1f75df35b7a9cb72e6a59dd" From 0a48b0d59bf4077df13902afd29fc5159849c573 Mon Sep 17 00:00:00 2001 From: Bogdan Chadkin Date: Wed, 4 Apr 2018 12:27:36 +0300 Subject: [PATCH 3/4] Remove rollup replace plugin --- package.json | 1 - rollup.config.js | 64 +++++++++++++++++++++++++----------------------- yarn.lock | 29 ---------------------- 3 files changed, 34 insertions(+), 60 deletions(-) diff --git a/package.json b/package.json index 464ed25cea..fdeaa7775a 100644 --- a/package.json +++ b/package.json @@ -93,7 +93,6 @@ "rimraf": "2.6.2", "rollup": "^0.56.2", "rollup-plugin-babel": "^3.0.3", - "rollup-plugin-replace": "^2.0.0", "rollup-plugin-size-snapshot": "^0.2.0", "rollup-plugin-uglify": "^3.0.0", "typescript": "2.7.2" diff --git a/rollup.config.js b/rollup.config.js index 2c70966aa3..ee4bca45d8 100644 --- a/rollup.config.js +++ b/rollup.config.js @@ -1,13 +1,21 @@ import babel from 'rollup-plugin-babel'; -import replace from 'rollup-plugin-replace'; -import { sizeSnapshot } from 'rollup-plugin-size-snapshot'; import uglify from 'rollup-plugin-uglify'; +import { sizeSnapshot } from 'rollup-plugin-size-snapshot'; + +const input = './src/index.js'; -const getUMDConfig = ({ env, file }) => { - const config = { - input: './src/index.js', +const getBabelOptions = () => ({ + plugins: [ + 'external-helpers', + ['transform-react-remove-prop-types', { removeImport: true }], + ], +}); + +export default [ + { + input, output: { - file, + file: 'lib/daypicker.js', sourcemap: true, format: 'umd', name: 'DayPicker', @@ -17,30 +25,26 @@ const getUMDConfig = ({ env, file }) => { }, external: ['react'], plugins: [ - babel({ - plugins: [ - 'external-helpers', - ['transform-react-remove-prop-types', { removeImport: true }], - ], - }), - replace({ - 'process.env.NODE_ENV': JSON.stringify(env), - }), + babel(getBabelOptions()), + sizeSnapshot(), ], - }; + }, - if (env === 'development') { - config.plugins.push(sizeSnapshot()); - } - - if (env === 'production') { - config.plugins.push(uglify()); - } - - return config; -}; - -export default [ - getUMDConfig({ env: 'development', file: 'lib/daypicker.js' }), - getUMDConfig({ env: 'production', file: 'lib/daypicker.min.js' }), + { + input, + output: { + file: 'lib/daypicker.min.js', + sourcemap: true, + format: 'umd', + name: 'DayPicker', + globals: { + react: 'React', + }, + }, + external: ['react'], + plugins: [ + babel(getBabelOptions()), + uglify(), + ], + }, ]; diff --git a/yarn.lock b/yarn.lock index d3ecbeda71..cd92ed5a04 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2090,10 +2090,6 @@ estree-walker@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.2.1.tgz#bdafe8095383d8414d5dc2ecf4c9173b6db9412e" -estree-walker@^0.3.0: - version "0.3.1" - resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.3.1.tgz#e6b1a51cf7292524e7237c312e5fe6660c1ce1aa" - esutils@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" @@ -3713,12 +3709,6 @@ lru-cache@^4.0.1: pseudomap "^1.0.2" yallist "^2.1.2" -magic-string@^0.22.4: - version "0.22.4" - resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.22.4.tgz#31039b4e40366395618c1d6cf8193c53917475ff" - dependencies: - vlq "^0.2.1" - makeerror@1.0.x: version "1.0.11" resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.11.tgz#e01a5c9109f2af79660e4e8b9587790184f5a96c" @@ -4793,14 +4783,6 @@ rollup-plugin-babel@^3.0.3: dependencies: rollup-pluginutils "^1.5.0" -rollup-plugin-replace@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/rollup-plugin-replace/-/rollup-plugin-replace-2.0.0.tgz#19074089c8ed57184b8cc64e967a03d095119277" - dependencies: - magic-string "^0.22.4" - minimatch "^3.0.2" - rollup-pluginutils "^2.0.1" - rollup-plugin-size-snapshot@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/rollup-plugin-size-snapshot/-/rollup-plugin-size-snapshot-0.2.0.tgz#868db6ec0594d8baca9c2fae5017e9f125723c71" @@ -4825,13 +4807,6 @@ rollup-pluginutils@^1.5.0: estree-walker "^0.2.1" minimatch "^3.0.2" -rollup-pluginutils@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/rollup-pluginutils/-/rollup-pluginutils-2.0.1.tgz#7ec95b3573f6543a46a6461bd9a7c544525d0fc0" - dependencies: - estree-walker "^0.3.0" - micromatch "^2.3.11" - rollup@^0.56.2: version "0.56.5" resolved "https://registry.yarnpkg.com/rollup/-/rollup-0.56.5.tgz#40fe3cf0cd1659d469baad11f4d5b6336c14ce84" @@ -5482,10 +5457,6 @@ verror@1.10.0: core-util-is "1.0.2" extsprintf "^1.2.0" -vlq@^0.2.1: - version "0.2.3" - resolved "https://registry.yarnpkg.com/vlq/-/vlq-0.2.3.tgz#8f3e4328cf63b1540c0d67e1b2778386f8975b26" - walker@~1.0.5: version "1.0.7" resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.7.tgz#2f7f9b8fd10d677262b18a884e28d19618e028fb" From 9c81dc1d0609ca2ee85ee40af39c59ec9b532d9a Mon Sep 17 00:00:00 2001 From: Bogdan Chadkin Date: Wed, 4 Apr 2018 12:28:41 +0300 Subject: [PATCH 4/4] Upgrade size snapshot plugin --- .size-snapshot.json | 2 +- package.json | 2 +- yarn.lock | 6 +++--- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.size-snapshot.json b/.size-snapshot.json index b2d9417f6d..09ca6226b4 100644 --- a/.size-snapshot.json +++ b/.size-snapshot.json @@ -4,4 +4,4 @@ "minified": 28661, "gzipped": 7798 } -} \ No newline at end of file +} diff --git a/package.json b/package.json index fdeaa7775a..1594937b34 100644 --- a/package.json +++ b/package.json @@ -93,7 +93,7 @@ "rimraf": "2.6.2", "rollup": "^0.56.2", "rollup-plugin-babel": "^3.0.3", - "rollup-plugin-size-snapshot": "^0.2.0", + "rollup-plugin-size-snapshot": "^0.2.1", "rollup-plugin-uglify": "^3.0.0", "typescript": "2.7.2" }, diff --git a/yarn.lock b/yarn.lock index cd92ed5a04..210bc18675 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4783,9 +4783,9 @@ rollup-plugin-babel@^3.0.3: dependencies: rollup-pluginutils "^1.5.0" -rollup-plugin-size-snapshot@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/rollup-plugin-size-snapshot/-/rollup-plugin-size-snapshot-0.2.0.tgz#868db6ec0594d8baca9c2fae5017e9f125723c71" +rollup-plugin-size-snapshot@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/rollup-plugin-size-snapshot/-/rollup-plugin-size-snapshot-0.2.1.tgz#f4d95ec11b6b6a291eeb93c87023ed4955942f9c" dependencies: bytes "^3.0.0" chalk "^2.3.2"