diff --git a/app/angular/package.json b/app/angular/package.json index 3cefe1cb6c63..241ed27c0c1b 100644 --- a/app/angular/package.json +++ b/app/angular/package.json @@ -36,7 +36,7 @@ "sass-loader": "^7.1.0", "ts-loader": "^6.0.1", "tsconfig-paths-webpack-plugin": "^3.2.0", - "webpack": "^4.32.2" + "webpack": "^4.33.0" }, "peerDependencies": { "@angular-devkit/core": "^0.6.1 || >=7.0.0", diff --git a/app/polymer/package.json b/app/polymer/package.json index 7a7ee35149dd..284e49beb541 100644 --- a/app/polymer/package.json +++ b/app/polymer/package.json @@ -31,7 +31,7 @@ "core-js": "^3.0.1", "global": "^4.3.2", "regenerator-runtime": "^0.12.1", - "webpack": "^4.32.2" + "webpack": "^4.33.0" }, "devDependencies": { "lit-html": "^1.0.0", diff --git a/app/react-native-server/package.json b/app/react-native-server/package.json index e21b2b0483ef..cc8573d01b9b 100644 --- a/app/react-native-server/package.json +++ b/app/react-native-server/package.json @@ -35,7 +35,7 @@ "react": "^16.6.0", "react-dom": "^16.8.3", "uuid": "^3.3.2", - "webpack": "^4.23.1", + "webpack": "^4.33.0", "ws": "^6.1.0" }, "peerDependencies": { diff --git a/app/react/package.json b/app/react/package.json index f9a415c48e36..682d97d8508b 100644 --- a/app/react/package.json +++ b/app/react/package.json @@ -44,7 +44,7 @@ "react-dev-utils": "^9.0.0", "regenerator-runtime": "^0.12.1", "semver": "^6.0.0", - "webpack": "^4.28.0" + "webpack": "^4.33.0" }, "peerDependencies": { "babel-loader": "^7.0.0 || ^8.0.0", diff --git a/examples/ember-cli/package.json b/examples/ember-cli/package.json index e72011a4aa70..d8b32b84e4d6 100644 --- a/examples/ember-cli/package.json +++ b/examples/ember-cli/package.json @@ -45,7 +45,7 @@ "ember-resolver": "^5.1.3", "ember-source": "~3.9.1", "loader.js": "^4.2.3", - "webpack": "^4.28.0", + "webpack": "^4.33.0", "webpack-cli": "^3.3.0" }, "engines": { diff --git a/examples/marko-cli/package.json b/examples/marko-cli/package.json index c1fc70124802..72ba0b726150 100644 --- a/examples/marko-cli/package.json +++ b/examples/marko-cli/package.json @@ -32,6 +32,6 @@ "@storybook/addons": "5.1.3", "@storybook/marko": "5.1.3", "prettier": "^1.16.4", - "webpack": "^4.28.0" + "webpack": "^4.33.0" } } diff --git a/examples/mithril-kitchen-sink/package.json b/examples/mithril-kitchen-sink/package.json index bb397ded2c4b..bb41c828b2e3 100644 --- a/examples/mithril-kitchen-sink/package.json +++ b/examples/mithril-kitchen-sink/package.json @@ -24,6 +24,6 @@ "@storybook/addon-viewport": "5.1.3", "@storybook/addons": "5.1.3", "@storybook/mithril": "5.1.3", - "webpack": "^4.28.0" + "webpack": "^4.33.0" } } diff --git a/examples/official-storybook/package.json b/examples/official-storybook/package.json index a2650c2a46e9..1146d6b021bf 100644 --- a/examples/official-storybook/package.json +++ b/examples/official-storybook/package.json @@ -54,6 +54,6 @@ "storybook-chromatic": "^1.3.3", "ts-loader": "^6.0.0", "uuid": "^3.3.2", - "webpack": "^4.28.0" + "webpack": "^4.33.0" } } diff --git a/examples/polymer-cli/package.json b/examples/polymer-cli/package.json index b1e58dcaf3e5..e4ad22ac7dd4 100644 --- a/examples/polymer-cli/package.json +++ b/examples/polymer-cli/package.json @@ -24,7 +24,7 @@ "global": "^4.3.2", "lit-html": "^1.0.0", "polymer-webpack-loader": "^2.0.3", - "webpack": "^4.28.0" + "webpack": "^4.33.0" }, "devDependencies": { "copy-webpack-plugin": "^5.0.0", diff --git a/examples/preact-kitchen-sink/package.json b/examples/preact-kitchen-sink/package.json index ad8195020aa0..c303e7cac90f 100644 --- a/examples/preact-kitchen-sink/package.json +++ b/examples/preact-kitchen-sink/package.json @@ -36,7 +36,7 @@ "preact-render-to-json": "^3.6.6", "raw-loader": "^2.0.0", "svg-url-loader": "^2.3.2", - "webpack": "^4.28.0", + "webpack": "^4.33.0", "webpack-dev-server": "^3.4.1" } } diff --git a/examples/riot-kitchen-sink/package.json b/examples/riot-kitchen-sink/package.json index 8d77da392efb..9554a61c3325 100644 --- a/examples/riot-kitchen-sink/package.json +++ b/examples/riot-kitchen-sink/package.json @@ -35,7 +35,7 @@ "raw-loader": "^2.0.0", "riot-tag-loader": "^2.1.0", "svg-url-loader": "^2.3.2", - "webpack": "^4.28.0", + "webpack": "^4.33.0", "webpack-dev-server": "^3.4.1" } } diff --git a/examples/vue-kitchen-sink/package.json b/examples/vue-kitchen-sink/package.json index 3e4376f3b84f..d89db82225b7 100644 --- a/examples/vue-kitchen-sink/package.json +++ b/examples/vue-kitchen-sink/package.json @@ -35,7 +35,7 @@ "file-loader": "^3.0.1", "svg-url-loader": "^2.3.2", "vue-loader": "^15.7.0", - "webpack": "^4.28.0", + "webpack": "^4.33.0", "webpack-dev-server": "^3.4.1" } } diff --git a/lib/cli/test/fixtures/riot/package.json b/lib/cli/test/fixtures/riot/package.json index a54298de38bc..e7bb5dfff137 100644 --- a/lib/cli/test/fixtures/riot/package.json +++ b/lib/cli/test/fixtures/riot/package.json @@ -20,7 +20,7 @@ "riot-compiler": "^3.6.0", "riot-hot-reload": "^1.0.0", "style-loader": "^0.23.1", - "webpack": "^4.28.0", + "webpack": "^4.33.0", "webpack-bundle-analyzer": "^3.3.2", "webpack-cli": "^3.2.3" } diff --git a/lib/cli/test/fixtures/sfc_vue/package.json b/lib/cli/test/fixtures/sfc_vue/package.json index b69818341293..884f8a277ab8 100644 --- a/lib/cli/test/fixtures/sfc_vue/package.json +++ b/lib/cli/test/fixtures/sfc_vue/package.json @@ -48,7 +48,7 @@ "vue-loader": "15.7.0", "vue-style-loader": "^4.1.2", "vue-template-compiler": "^2.6.8", - "webpack": "^4.28.0", + "webpack": "^4.33.0", "webpack-bundle-analyzer": "^3.3.2", "webpack-dev-middleware": "^3.6.0", "webpack-hot-middleware": "^2.24.3", diff --git a/lib/cli/test/fixtures/webpack_react/package.json b/lib/cli/test/fixtures/webpack_react/package.json index f8615b24f6e5..34de2092b368 100644 --- a/lib/cli/test/fixtures/webpack_react/package.json +++ b/lib/cli/test/fixtures/webpack_react/package.json @@ -16,6 +16,6 @@ "@babel/preset-react": "7.0.0", "babel-core": "^7.0.0-bridge.0", "babel-loader": "^8.0.5", - "webpack": "^4.28.0" + "webpack": "^4.33.0" } } diff --git a/lib/cli/test/fixtures/webpack_react_frozen_lock/package.json b/lib/cli/test/fixtures/webpack_react_frozen_lock/package.json index aa8396035e8b..6efbd6282c5f 100644 --- a/lib/cli/test/fixtures/webpack_react_frozen_lock/package.json +++ b/lib/cli/test/fixtures/webpack_react_frozen_lock/package.json @@ -16,6 +16,6 @@ "@babel/preset-react": "7.0.0", "babel-core": "^7.0.0-bridge.0", "babel-loader": "^8.0.5", - "webpack": "^4.28.0" + "webpack": "^4.33.0" } } diff --git a/lib/core/package.json b/lib/core/package.json index feed4e1fb59f..6da8d369d9d3 100644 --- a/lib/core/package.json +++ b/lib/core/package.json @@ -47,6 +47,7 @@ "commander": "^2.19.0", "common-tags": "^1.8.0", "core-js": "^3.0.1", + "corejs-upgrade-webpack-plugin": "^1.0.1", "css-loader": "^2.1.1", "detect-port": "^1.3.0", "dotenv-webpack": "^1.7.0", @@ -81,7 +82,7 @@ "terser-webpack-plugin": "^1.2.4", "url-loader": "^1.1.2", "util-deprecate": "^1.0.2", - "webpack": "^4.32.0", + "webpack": "^4.33.0", "webpack-dev-middleware": "^3.7.0", "webpack-hot-middleware": "^2.25.0" }, diff --git a/lib/core/src/server/manager/manager-webpack.config.js b/lib/core/src/server/manager/manager-webpack.config.js index 06d869c30b61..2a5edd5d05d1 100644 --- a/lib/core/src/server/manager/manager-webpack.config.js +++ b/lib/core/src/server/manager/manager-webpack.config.js @@ -3,6 +3,8 @@ import webpack, { DefinePlugin, ContextReplacementPlugin } from 'webpack'; import Dotenv from 'dotenv-webpack'; import HtmlWebpackPlugin from 'html-webpack-plugin'; import CaseSensitivePathsPlugin from 'case-sensitive-paths-webpack-plugin'; +import CoreJSUpgradeWebpackPlugin from 'corejs-upgrade-webpack-plugin'; + import themingPaths from '@storybook/theming/paths'; import uiPaths from '@storybook/ui/paths'; @@ -64,6 +66,7 @@ export default ({ configDir, configType, entries, dll, outputDir, cache, babelOp }), // See https://github.com/graphql/graphql-language-service/issues/111#issuecomment-306723400 new ContextReplacementPlugin(/graphql-language-service-interface[/\\]dist/, /\.js$/), + new CoreJSUpgradeWebpackPlugin({ resolveFrom: __dirname }), ].filter(Boolean), module: { rules: [ diff --git a/lib/core/src/server/preview/iframe-webpack.config.js b/lib/core/src/server/preview/iframe-webpack.config.js index 8cba134f7203..13430b8f177b 100644 --- a/lib/core/src/server/preview/iframe-webpack.config.js +++ b/lib/core/src/server/preview/iframe-webpack.config.js @@ -5,6 +5,8 @@ import HtmlWebpackPlugin from 'html-webpack-plugin'; import CaseSensitivePathsPlugin from 'case-sensitive-paths-webpack-plugin'; import WatchMissingNodeModulesPlugin from 'react-dev-utils/WatchMissingNodeModulesPlugin'; import TerserWebpackPlugin from 'terser-webpack-plugin'; +import CoreJSUpgradeWebpackPlugin from 'corejs-upgrade-webpack-plugin'; + import resolveFrom from 'resolve-from'; import babelLoader from '../common/babel-loader'; @@ -67,6 +69,7 @@ export default ({ new CaseSensitivePathsPlugin(), quiet ? null : new ProgressPlugin(), new Dotenv({ silent: true }), + new CoreJSUpgradeWebpackPlugin({ resolveFrom: __dirname }), ].filter(Boolean), module: { rules: [ diff --git a/lib/ui/package.json b/lib/ui/package.json index 397c763e3af6..310a071b9574 100644 --- a/lib/ui/package.json +++ b/lib/ui/package.json @@ -55,9 +55,10 @@ "util-deprecate": "^1.0.2" }, "devDependencies": { + "corejs-upgrade-webpack-plugin": "^1.0.1", "flush-promises": "^1.0.2", "terser-webpack-plugin": "^1.2.4", - "webpack": "^4.28.0" + "webpack": "^4.33.0" }, "publishConfig": { "access": "public" diff --git a/lib/ui/scripts/__tests__/coreJsAutoUpgradePlugin.js b/lib/ui/scripts/__tests__/coreJsAutoUpgradePlugin.js deleted file mode 100644 index cbe0d6cc394e..000000000000 --- a/lib/ui/scripts/__tests__/coreJsAutoUpgradePlugin.js +++ /dev/null @@ -1,61 +0,0 @@ -import coreJsAutoUpgradePlugin, { upgradeCoreJsRequest } from '../coreJsAutoUpgradePlugin'; - -describe('upgradeCoreJsRequest', () => { - const fakeRequire = jest.mock(); - - describe('rewrite `core-js/modules/*`', () => { - it('should rewrite `core-js/modules/es6.*` import to `core-js/modules/es.*`', () => { - expect(upgradeCoreJsRequest('core-js/modules/es6.object.is-frozen.js')).toBe( - 'core-js/modules/es.object.is-frozen.js' - ); - }); - - it('should rewrite `core-js/modules/es7.*` import to `core-js/modules/esnext.*`', () => { - expect(upgradeCoreJsRequest('core-js/modules/es7.math.iaddh.js')).toBe( - 'core-js/modules/esnext.math.iaddh.js' - ); - }); - }); - - describe('rewrite `core-js/library/fn/*`', () => { - it('should rewrite `core-js/library/*` import to `core-js-pure/features/*`', () => { - expect(upgradeCoreJsRequest('core-js/library/fn/object/assign')).toBe( - 'core-js-pure/features/object/assign' - ); - }); - }); - - describe('rewrite `core-js/es(5|6|7)/*`', () => { - it('should not rewrite `core-js/es5` import', () => { - expect(upgradeCoreJsRequest('core-js/es5')).toBeNull(); - }); - - it('should rewrite `core-js/es6/*` import to `core-js/es/*`', () => { - expect(upgradeCoreJsRequest('core-js/es6/object.js')).toBe('core-js/es/object'); - - expect(upgradeCoreJsRequest('core-js/es6/parse-int')).toBe('core-js/es/parse-int'); - }); - - it('should not rewrite `core-js/es7` import`', () => { - expect(upgradeCoreJsRequest('core-js/es7/array.js')).toBeNull(); - }); - }); - - describe('rewrite `core-js/object/*`', () => { - it('should rewrite `core-js/object/*` import to `core-js/features/*`', () => { - expect(upgradeCoreJsRequest('core-js/object/assign.js')).toBe( - 'core-js/features/object/assign.js' - ); - - expect(upgradeCoreJsRequest('../core-js/object/assign')).toBe( - '../core-js/features/object/assign' - ); - }); - }); - - it('should preserve request prefix when upgrading the request', () => { - expect(upgradeCoreJsRequest('../foo/core-js/modules/es6.bar.js')).toBe( - '../foo/core-js/modules/es.bar.js' - ); - }); -}); diff --git a/lib/ui/scripts/coreJsAutoUpgradePlugin.js b/lib/ui/scripts/coreJsAutoUpgradePlugin.js deleted file mode 100644 index 69aaf20f1c86..000000000000 --- a/lib/ui/scripts/coreJsAutoUpgradePlugin.js +++ /dev/null @@ -1,81 +0,0 @@ -import { NormalModuleReplacementPlugin } from 'webpack'; - -const rewriteAndPreservePrefix = (originalRequest, newPath, newModuleName = 'core-js') => { - const result = originalRequest.match(/(.*\/)core-js\/.*/); - const requestPrefix = result ? result[1] : ''; - - return `${requestPrefix}${newModuleName}/${newPath}`; -}; - -export const upgradeCoreJsRequest = originalRequest => { - if (/core-js\/modules\/(.*)/.test(originalRequest)) { - const modulesInformations = originalRequest.match(/core-js\/modules\/es(6|7)\.(.*)/); - const esVersion = modulesInformations[1]; - const originalPath = modulesInformations[2]; - - if (esVersion === '6') { - return rewriteAndPreservePrefix(originalRequest, `modules/es.${originalPath}`); - } - if (esVersion === '7') { - return rewriteAndPreservePrefix(originalRequest, `modules/esnext.${originalPath}`); - } - } - - if (/core-js\/library\/fn\/(.*)/.test(originalRequest)) { - const modulesInformations = originalRequest.match(/core-js\/library\/fn\/(.*)/); - const originalPath = modulesInformations[1]; - - return rewriteAndPreservePrefix(originalRequest, `features/${originalPath}`, 'core-js-pure'); - } - - if (/core-js\/es(5|6|7)(.*)/.test(originalRequest)) { - const modulesInformations = originalRequest.match(/core-js\/es(5|6|7)(.*)?/); - const esVersion = modulesInformations[1]; - const originalPath = modulesInformations[2]; - - if (esVersion === '5') { - return null; - } - if (esVersion === '6') { - const asAModule = originalPath.replace('.js', ''); - - return rewriteAndPreservePrefix(originalRequest, `es${asAModule}`); - } - if (esVersion === '7') { - return null; - } - } - - if (/core-js\/(object)\/(.*)/.test(originalRequest)) { - const modulesInformations = originalRequest.match(/core-js\/(.*)?/); - const originalPath = modulesInformations[1]; - - return rewriteAndPreservePrefix(originalRequest, `features/${originalPath}`); - } - - return originalRequest; -}; - -export default require => - new NormalModuleReplacementPlugin(/core-js/, resource => { - const originalRequest = resource.request; - if (originalRequest.startsWith('./') || originalRequest.startsWith('../')) { - return; - } - - try { - require.resolve(originalRequest); - } catch (originalError) { - const newRequest = upgradeCoreJsRequest(originalRequest); - if (!newRequest) { - throw originalError; - } - - try { - // eslint-disable-next-line no-param-reassign - resource.request = require.resolve(newRequest); - } catch (newRequestError) { - throw originalError; - } - } - }); diff --git a/lib/ui/scripts/webpackDllsConfig.js b/lib/ui/scripts/webpackDllsConfig.js index 9e0a2f611132..839a147d1bfd 100644 --- a/lib/ui/scripts/webpackDllsConfig.js +++ b/lib/ui/scripts/webpackDllsConfig.js @@ -1,7 +1,7 @@ import path from 'path'; import { ProgressPlugin, DllPlugin } from 'webpack'; import TerserPlugin from 'terser-webpack-plugin'; -import coreJsAutoUpgradePlugin from './coreJsAutoUpgradePlugin'; +import CoreJSUpgradeWebpackPlugin from 'corejs-upgrade-webpack-plugin'; const resolveLocal = dir => path.join(__dirname, dir); @@ -32,7 +32,7 @@ export default ({ entry, provided = [] }) => ({ path: `${out}/[name]-manifest.json`, name: '[name]_dll', }), - coreJsAutoUpgradePlugin(require), + new CoreJSUpgradeWebpackPlugin(), ], optimization: { concatenateModules: true, diff --git a/package.json b/package.json index f524aa5e70f1..22f76cb6e331 100644 --- a/package.json +++ b/package.json @@ -167,6 +167,7 @@ "commander": "^2.19.0", "concurrently": "^4.0.1", "core-js": "^3.0.1", + "corejs-upgrade-webpack-plugin": "^1.0.1", "cross-env": "^5.2.0", "danger": "^7.0.15", "enzyme": "^3.9.0", diff --git a/yarn.lock b/yarn.lock index f44a548cb71a..0cb8df0e3d14 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9136,6 +9136,14 @@ core-util-is@1.0.2, core-util-is@~1.0.0: resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= +corejs-upgrade-webpack-plugin@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/corejs-upgrade-webpack-plugin/-/corejs-upgrade-webpack-plugin-1.0.1.tgz#6f54085a60da28e60c62d551dbd899812d16ad57" + integrity sha512-WWZ7X0ly4TpnyoNypDNqQtq55Dyq2525iz5wD2Zq5mBC3qxIKY9Mm1Tfqf6xJxvQ1At9eC8i8aN5vLr444cunw== + dependencies: + resolve-from "^5.0.0" + webpack "^4.33.0" + cors@^2.8.5: version "2.8.5" resolved "https://registry.yarnpkg.com/cors/-/cors-2.8.5.tgz#eac11da51592dd86b9f06f6e7ac293b3df875d29" @@ -30419,10 +30427,10 @@ webpack@4.29.6: watchpack "^1.5.0" webpack-sources "^1.3.0" -webpack@^4.23.1, webpack@^4.28.0, webpack@^4.32.0, webpack@^4.32.2: - version "4.32.2" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.32.2.tgz#3639375364a617e84b914ddb2c770aed511e5bc8" - integrity sha512-F+H2Aa1TprTQrpodRAWUMJn7A8MgDx82yQiNvYMaj3d1nv3HetKU0oqEulL9huj8enirKi8KvEXQ3QtuHF89Zg== +webpack@^4.33.0: + version "4.33.0" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.33.0.tgz#c30fc4307db432e5c5e3333aaa7c16a15a3b277e" + integrity sha512-ggWMb0B2QUuYso6FPZKUohOgfm+Z0sVFs8WwWuSH1IAvkWs428VDNmOlAxvHGTB9Dm/qOB/qtE5cRx5y01clxw== dependencies: "@webassemblyjs/ast" "1.8.5" "@webassemblyjs/helper-module-context" "1.8.5"