From eb485e4eed05a974fa0cdb463d3f99319121e623 Mon Sep 17 00:00:00 2001 From: Laura Cabrera Date: Mon, 17 Jul 2017 13:19:43 -0700 Subject: [PATCH] build(bundler): introduced rollup to do an ES6 modules build --- enriched/package.json | 14 +- enriched/rollup.config.js | 38 +++++ enriched/src/components/Card/Card.jsx | 4 +- enriched/src/components/Card/Card.scss | 2 +- .../{index.js => ExpandCollapse.js} | 0 .../src/components/ExpandCollapse/Panel.jsx | 4 +- .../src/components/ExpandCollapse/Panel.scss | 4 +- .../__tests__/ExpandCollapse.spec.jsx | 4 +- enriched/src/index.js | 2 +- enriched/src/rollup-main.js | 2 + enriched/yarn.lock | 131 ++++++++++++++++-- 11 files changed, 178 insertions(+), 27 deletions(-) create mode 100644 enriched/rollup.config.js rename enriched/src/components/ExpandCollapse/{index.js => ExpandCollapse.js} (100%) create mode 100644 enriched/src/rollup-main.js diff --git a/enriched/package.json b/enriched/package.json index 744e9384bf..2d8cab4cf9 100644 --- a/enriched/package.json +++ b/enriched/package.json @@ -1,7 +1,8 @@ { "name": "telus-thorium-enriched", "version": "0.18.1", - "main": "lib/index.js", + "main": "dist/tds.cjs.js", + "module": "dist/tds.es.js", "scripts": { "start": "npm run deploy && npm run dev", "clean": "rimraf lib && rimraf dist && mkdirp lib && mkdirp dist", @@ -14,7 +15,8 @@ "build:umd:min": "webpack -p --config webpack.config.umd.min.js", "build": "npm run clean && npm run build:lib && npm run build:umd && npm run build:umd:min", "test": "jest", - "test:watch": "npm run test -- --watch" + "test:watch": "npm run test -- --watch", + "rollup": "rollup -c" }, "dependencies": { "@telusdigital/redux-contentful": "^2.2.1", @@ -33,6 +35,7 @@ "babel-core": "^6.17.0", "babel-jest": "^16.0.0", "babel-loader": "^6.2.5", + "babel-plugin-external-helpers": "^6.22.0", "babel-preset-es2015": "^6.16.0", "babel-preset-react": "^6.16.0", "babel-preset-stage-2": "^6.17.0", @@ -67,6 +70,11 @@ "react-dom": "^15.3.2", "react-test-renderer": "^15.3.2", "rimraf": "^2.5.4", + "rollup": "^0.45.2", + "rollup-plugin-babel": "^2.7.1", + "rollup-plugin-commonjs": "^8.0.2", + "rollup-plugin-node-resolve": "^3.0.0", + "rollup-plugin-sass": "^0.5.3", "sass-loader": "^3.1.1", "sinon": "^2.3.6", "style-loader": "^0.12.3", @@ -96,4 +104,4 @@ }, "setupTestFrameworkScriptFile": "/../node_modules/jest-enzyme/lib/index.js" } -} \ No newline at end of file +} diff --git a/enriched/rollup.config.js b/enriched/rollup.config.js new file mode 100644 index 0000000000..73a3ca81d6 --- /dev/null +++ b/enriched/rollup.config.js @@ -0,0 +1,38 @@ +import path from 'path'; + +import resolve from 'rollup-plugin-node-resolve'; +import commonjs from 'rollup-plugin-commonjs'; +import babel from 'rollup-plugin-babel'; +import sass from 'rollup-plugin-sass'; + +export default { + entry: path.resolve('./src/rollup-main.js'), + targets: [ + { format: 'cjs', dest: path.resolve('./dist/tds.cjs.js') }, + { format: 'es', dest: path.resolve('./dist/tds.es.js') } + ], + sourceMap: true, + + external: ['react', 'prop-types'], + plugins: [ + resolve({ + extensions: ['.js', '.jsx'] + }), + commonjs({ + include: 'node_modules/**' + }), + sass({ + output: path.resolve('./dist/tds.css') + }), + babel({ + babelrc: false, + presets: [ + ['es2015', { modules: false }], + 'react', + 'stage-2' + ], + plugins: ['external-helpers'], + exclude: 'node_modules/**' + }) + ] +}; diff --git a/enriched/src/components/Card/Card.jsx b/enriched/src/components/Card/Card.jsx index 57ea70ddb3..05735b1158 100644 --- a/enriched/src/components/Card/Card.jsx +++ b/enriched/src/components/Card/Card.jsx @@ -5,9 +5,7 @@ import classNames from 'classnames'; import { warn } from '../../deprecate'; -if (process.env.BROWSER) { - require('./Card.scss'); -} +import './Card.scss'; const Card = ({ className, children, ...rest }) => { if (className) { diff --git a/enriched/src/components/Card/Card.scss b/enriched/src/components/Card/Card.scss index c623a4b7ed..e45325a19c 100644 --- a/enriched/src/components/Card/Card.scss +++ b/enriched/src/components/Card/Card.scss @@ -1,4 +1,4 @@ -@import '~telus-thorium-core/scss/settings/variables'; +@import '../../../../core/scss/settings/variables'; .card { border: 0; diff --git a/enriched/src/components/ExpandCollapse/index.js b/enriched/src/components/ExpandCollapse/ExpandCollapse.js similarity index 100% rename from enriched/src/components/ExpandCollapse/index.js rename to enriched/src/components/ExpandCollapse/ExpandCollapse.js diff --git a/enriched/src/components/ExpandCollapse/Panel.jsx b/enriched/src/components/ExpandCollapse/Panel.jsx index d40f3567e3..49bfd7d205 100644 --- a/enriched/src/components/ExpandCollapse/Panel.jsx +++ b/enriched/src/components/ExpandCollapse/Panel.jsx @@ -2,9 +2,7 @@ import React, { Component } from 'react'; import PropTypes from 'prop-types'; import classNames from 'classnames'; -if (process.env.BROWSER) { - require('./Panel.scss'); -} +import './Panel.scss'; class Panel extends Component { diff --git a/enriched/src/components/ExpandCollapse/Panel.scss b/enriched/src/components/ExpandCollapse/Panel.scss index f77147bceb..f5f2da1844 100644 --- a/enriched/src/components/ExpandCollapse/Panel.scss +++ b/enriched/src/components/ExpandCollapse/Panel.scss @@ -1,5 +1,5 @@ -@import '~telus-thorium-core/scss/settings/variables'; -@import '~telus-thorium-core/scss/utility/mixins'; +@import '../../../../core/scss/settings/variables'; +@import '../../../../core/scss/utility/mixins'; .icon-core-caret-up { diff --git a/enriched/src/components/ExpandCollapse/__tests__/ExpandCollapse.spec.jsx b/enriched/src/components/ExpandCollapse/__tests__/ExpandCollapse.spec.jsx index 7995c0053e..939e17cee1 100644 --- a/enriched/src/components/ExpandCollapse/__tests__/ExpandCollapse.spec.jsx +++ b/enriched/src/components/ExpandCollapse/__tests__/ExpandCollapse.spec.jsx @@ -1,10 +1,10 @@ import React from 'react'; import { mount } from 'enzyme'; -import ExpandCollapse from '../'; +import ExpandCollapse from '../ExpandCollapse'; const { Group, Panel } = ExpandCollapse; -describe('', () => { +describe('', () => { it('handles disabled panels', () => { const wrapper = mount( diff --git a/enriched/src/index.js b/enriched/src/index.js index d68aacc4c2..8468477355 100644 --- a/enriched/src/index.js +++ b/enriched/src/index.js @@ -1,7 +1,7 @@ import SelectorCounter from './components/SelectorCounter'; import Icon from './components/Icon'; import * as Grid from './components/Grid'; -import ExpandCollapse from './components/ExpandCollapse'; +import ExpandCollapse from './components/ExpandCollapse/ExpandCollapse'; import Card from './components/Card/Card'; import Notification from './components/Notification/Notification'; import Steps from './components/Steps'; diff --git a/enriched/src/rollup-main.js b/enriched/src/rollup-main.js new file mode 100644 index 0000000000..052daa6bb8 --- /dev/null +++ b/enriched/src/rollup-main.js @@ -0,0 +1,2 @@ +export { default as Card } from './components/Card/Card'; +export { default as ExpandCollapse } from './components/ExpandCollapse/ExpandCollapse'; diff --git a/enriched/yarn.lock b/enriched/yarn.lock index 3abef47815..b5f17e2ee0 100644 --- a/enriched/yarn.lock +++ b/enriched/yarn.lock @@ -52,7 +52,7 @@ acorn@^3.0.0, acorn@^3.0.4: version "3.3.0" resolved "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a" -acorn@^4.0.4: +acorn@^4.0.1, acorn@^4.0.4: version "4.0.13" resolved "https://registry.yarnpkg.com/acorn/-/acorn-4.0.13.tgz#105495ae5361d697bd195c825192e1ad7f253787" @@ -323,7 +323,7 @@ babel-code-frame@^6.11.0, babel-code-frame@^6.16.0, babel-code-frame@^6.22.0: esutils "^2.0.2" js-tokens "^3.0.0" -babel-core@^6.0.0, babel-core@^6.17.0, babel-core@^6.24.1: +babel-core@6, babel-core@^6.0.0, babel-core@^6.17.0, babel-core@^6.24.1: version "6.25.0" resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.25.0.tgz#7dd42b0463c742e9d5296deb3ec67a9322dad729" dependencies: @@ -523,6 +523,12 @@ babel-plugin-check-es2015-constants@^6.22.0: dependencies: babel-runtime "^6.22.0" +babel-plugin-external-helpers@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-external-helpers/-/babel-plugin-external-helpers-6.22.0.tgz#2285f48b02bd5dede85175caf8c62e86adccefa1" + dependencies: + babel-runtime "^6.22.0" + babel-plugin-istanbul@^2.0.0: version "2.0.3" resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-2.0.3.tgz#266b304b9109607d60748474394676982f660df4" @@ -645,7 +651,7 @@ babel-plugin-transform-es2015-block-scoping@^6.24.1: babel-types "^6.24.1" lodash "^4.2.0" -babel-plugin-transform-es2015-classes@^6.24.1: +babel-plugin-transform-es2015-classes@^6.24.1, babel-plugin-transform-es2015-classes@^6.9.0: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz#5a4c58a50c9c9461e564b4b2a3bfabc97a2584db" dependencies: @@ -951,7 +957,7 @@ babel-register@^6.24.1: mkdirp "^0.5.1" source-map-support "^0.4.2" -babel-runtime@^6.18.0, babel-runtime@^6.20.0, babel-runtime@^6.22.0, babel-runtime@^6.3.19: +babel-runtime@^6.18.0, babel-runtime@^6.20.0, babel-runtime@^6.22.0, babel-runtime@^6.23.0, babel-runtime@^6.3.19: version "6.23.0" resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.23.0.tgz#0a9489f144de70efb3ce4300accdb329e2fc543b" dependencies: @@ -1113,7 +1119,7 @@ brorand@^1.0.1: version "1.1.0" resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" -browser-resolve@^1.11.2: +browser-resolve@^1.11.0, browser-resolve@^1.11.2: version "1.11.2" resolved "https://registry.yarnpkg.com/browser-resolve/-/browser-resolve-1.11.2.tgz#8ff09b0a2c421718a1051c260b32e48f442938ce" dependencies: @@ -1207,7 +1213,7 @@ buffer@^4.3.0, buffer@^4.9.0: ieee754 "^1.1.4" isarray "^1.0.0" -builtin-modules@^1.0.0, builtin-modules@^1.1.1: +builtin-modules@^1.0.0, builtin-modules@^1.1.0, builtin-modules@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" @@ -2413,6 +2419,14 @@ estraverse@^4.0.0, estraverse@^4.1.0, estraverse@^4.1.1, estraverse@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13" +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.0, esutils@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" @@ -2665,6 +2679,16 @@ formatio@1.2.0: dependencies: samsam "1.x" +fs-extra@^0.30.0: + version "0.30.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-0.30.0.tgz#f233ffcc08d4da7d432daa449776989db1df93f0" + dependencies: + graceful-fs "^4.1.2" + jsonfile "^2.1.0" + klaw "^1.0.0" + path-is-absolute "^1.0.0" + rimraf "^2.2.8" + fs-readdir-recursive@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs-readdir-recursive/-/fs-readdir-recursive-1.0.0.tgz#8cd1745c8b4f8a29c8caec392476921ba195f560" @@ -2824,7 +2848,7 @@ globule@^1.0.0: lodash "~4.17.4" minimatch "~3.0.2" -graceful-fs@^4.1.2, graceful-fs@^4.1.4, graceful-fs@^4.1.6: +graceful-fs@^4.1.2, graceful-fs@^4.1.4, graceful-fs@^4.1.6, graceful-fs@^4.1.9: version "4.1.11" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" @@ -3226,6 +3250,10 @@ is-glob@^2.0.0, is-glob@^2.0.1: dependencies: is-extglob "^1.0.0" +is-module@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591" + is-my-json-valid@^2.10.0: version "2.16.0" resolved "https://registry.yarnpkg.com/is-my-json-valid/-/is-my-json-valid-2.16.0.tgz#f079dd9bfdae65ee2038aae8acbc86ab109e3693" @@ -3723,6 +3751,12 @@ json5@^0.5.0: version "0.5.1" resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" +jsonfile@^2.1.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-2.4.0.tgz#3736a2b428b87bbda0cc83b53fa3d633a35c2ae8" + optionalDependencies: + graceful-fs "^4.1.6" + jsonify@~0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" @@ -3788,6 +3822,12 @@ kind-of@^4.0.0: dependencies: is-buffer "^1.1.5" +klaw@^1.0.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/klaw/-/klaw-1.3.1.tgz#4088433b46b3b1ba259d78785d8e96f73ba02439" + optionalDependencies: + graceful-fs "^4.1.9" + lazy-cache@^1.0.3: version "1.0.4" resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e" @@ -4070,6 +4110,12 @@ macaddress@^0.2.8: version "0.2.8" resolved "https://registry.yarnpkg.com/macaddress/-/macaddress-0.2.8.tgz#5904dc537c39ec6dbefeae902327135fa8511f12" +magic-string@^0.19.0: + version "0.19.1" + resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.19.1.tgz#14d768013caf2ec8fdea16a49af82fc377e75201" + 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" @@ -4341,7 +4387,7 @@ node-pre-gyp@^0.6.36: tar "^2.2.1" tar-pack "^3.4.0" -node-sass@^3.2.0, node-sass@^3.4.2: +"node-sass@>= 3.8.0", node-sass@^3.2.0, node-sass@^3.4.2: version "3.13.1" resolved "https://registry.yarnpkg.com/node-sass/-/node-sass-3.13.1.tgz#7240fbbff2396304b4223527ed3020589c004fc2" dependencies: @@ -5523,6 +5569,63 @@ ripemd160@^2.0.0, ripemd160@^2.0.1: hash-base "^2.0.0" inherits "^2.0.1" +rollup-plugin-babel@^2.7.1: + version "2.7.1" + resolved "https://registry.yarnpkg.com/rollup-plugin-babel/-/rollup-plugin-babel-2.7.1.tgz#16528197b0f938a1536f44683c7a93d573182f57" + dependencies: + babel-core "6" + babel-plugin-transform-es2015-classes "^6.9.0" + object-assign "^4.1.0" + rollup-pluginutils "^1.5.0" + +rollup-plugin-commonjs@^8.0.2: + version "8.0.2" + resolved "https://registry.yarnpkg.com/rollup-plugin-commonjs/-/rollup-plugin-commonjs-8.0.2.tgz#98b1589bfe32a6c0f67790b60c0b499972afed89" + dependencies: + acorn "^4.0.1" + estree-walker "^0.3.0" + magic-string "^0.19.0" + resolve "^1.1.7" + rollup-pluginutils "^2.0.1" + +rollup-plugin-node-resolve@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/rollup-plugin-node-resolve/-/rollup-plugin-node-resolve-3.0.0.tgz#8b897c4c3030d5001277b0514b25d2ca09683ee0" + dependencies: + browser-resolve "^1.11.0" + builtin-modules "^1.1.0" + is-module "^1.0.0" + resolve "^1.1.6" + +rollup-plugin-sass@^0.5.3: + version "0.5.3" + resolved "https://registry.yarnpkg.com/rollup-plugin-sass/-/rollup-plugin-sass-0.5.3.tgz#f275ee19d40f4f915287dbf7fef92b9cd03c6181" + dependencies: + babel-runtime "^6.23.0" + fs-extra "^0.30.0" + node-sass ">= 3.8.0" + rollup-pluginutils ">= 1.3.1" + +"rollup-pluginutils@>= 1.3.1", 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-pluginutils@^1.5.0: + version "1.5.2" + resolved "https://registry.yarnpkg.com/rollup-pluginutils/-/rollup-pluginutils-1.5.2.tgz#1e156e778f94b7255bfa1b3d0178be8f5c552408" + dependencies: + estree-walker "^0.2.1" + minimatch "^3.0.2" + +rollup@^0.45.2: + version "0.45.2" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-0.45.2.tgz#63a284c2b31234656f24e9e9717fabb6a7f0fa43" + dependencies: + source-map-support "^0.4.0" + run-async@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/run-async/-/run-async-0.1.0.tgz#c8ad4a5e110661e402a7d21b530e009f25f8e389" @@ -5712,7 +5815,7 @@ source-list-map@^0.1.7, source-list-map@~0.1.7: version "0.1.8" resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-0.1.8.tgz#c550b2ab5427f6b3f21f5afead88c4f5587b2106" -source-map-support@^0.4.2: +source-map-support@^0.4.0, source-map-support@^0.4.2: version "0.4.15" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.15.tgz#03202df65c06d2bd8c7ec2362a193056fef8d3b1" dependencies: @@ -5940,9 +6043,9 @@ tar@^2.0.0, tar@^2.2.1: fstream "^1.0.2" inherits "2" -telus-thorium-core@^0.16.3: - version "0.16.3" - resolved "https://registry.yarnpkg.com/telus-thorium-core/-/telus-thorium-core-0.16.3.tgz#ef61e26fd4dbfb59cfd101e3f74e0f1aadef3e1b" +telus-thorium-core@^0.18.1: + version "0.18.1" + resolved "https://registry.yarnpkg.com/telus-thorium-core/-/telus-thorium-core-0.18.1.tgz#8df380566ca743bea4efd191c29025a9525edc39" test-exclude@^2.1.1: version "2.1.3" @@ -6213,6 +6316,10 @@ verror@1.3.6: dependencies: extsprintf "1.0.2" +vlq@^0.2.1: + version "0.2.2" + resolved "https://registry.yarnpkg.com/vlq/-/vlq-0.2.2.tgz#e316d5257b40b86bb43cb8d5fea5d7f54d6b0ca1" + vm-browserify@0.0.4: version "0.0.4" resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-0.0.4.tgz#5d7ea45bbef9e4a6ff65f95438e0a87c357d5a73"