From 4c4e6ad77370a9b85d9de1a23bda54f8986c3c08 Mon Sep 17 00:00:00 2001 From: Endi Date: Tue, 22 Oct 2019 12:17:00 +0700 Subject: [PATCH] fix(v2): fix babel transpilation include/exclude logic (#1868) * fix(v2): fix babel transpilation include/exclude logic * nits * optimize * docs migration before alpha.30 hotfix --- CHANGELOG-2.x.md | 3 +++ packages/docusaurus/src/webpack/base.ts | 10 ++++++++-- .../src/webpack/plugins/LogPlugin.js | 10 +++++++--- packages/docusaurus/src/webpack/utils.ts | 9 ++++++++- website/docs/migrating-from-v1-to-v2.md | 8 ++++---- yarn.lock | 18 ++++-------------- 6 files changed, 34 insertions(+), 24 deletions(-) diff --git a/CHANGELOG-2.x.md b/CHANGELOG-2.x.md index 631aea85d356..33ebc19a11a8 100644 --- a/CHANGELOG-2.x.md +++ b/CHANGELOG-2.x.md @@ -1,5 +1,8 @@ # Docusaurus 2 Changelog +## 2.0.0-alpha.30 +- Fix babel transpilation include/exclude logic to be more efficient. This also fix a very weird bug `TypeError: Cannot assign to read only property 'exports' of object '#'` if your website path contains `docusaurus` word in it. + ## 2.0.0-alpha.29 **HOTFIX for 2.0.0-alpha.28**. diff --git a/packages/docusaurus/src/webpack/base.ts b/packages/docusaurus/src/webpack/base.ts index 0e1f6d25912a..8bb749b7b42d 100644 --- a/packages/docusaurus/src/webpack/base.ts +++ b/packages/docusaurus/src/webpack/base.ts @@ -24,6 +24,7 @@ export function createBaseConfig( ): Configuration { const {outDir, siteDir, baseUrl, generatedFilesDir, routesPaths} = props; + const clientDir = path.join(__dirname, '..', 'client'); const totalPages = routesPaths.length; const isProd = process.env.NODE_ENV === 'production'; return { @@ -115,9 +116,14 @@ export function createBaseConfig( { test: /\.jsx?$/, exclude: modulePath => { - // Don't transpile node_modules except any docusaurus package + // always transpile client dir + if (modulePath.startsWith(clientDir)) { + return false; + } + // Don't transpile node_modules except any docusaurus npm package return ( - /node_modules/.test(modulePath) && !/docusaurus/.test(modulePath) + /node_modules/.test(modulePath) && + !/(docusaurus)((?!node_modules).)*\.jsx?$/.test(modulePath) ); }, use: [getCacheLoader(isServer), getBabelLoader(isServer)].filter( diff --git a/packages/docusaurus/src/webpack/plugins/LogPlugin.js b/packages/docusaurus/src/webpack/plugins/LogPlugin.js index e2cbac7f0ecc..0ecdbd4ea0a6 100644 --- a/packages/docusaurus/src/webpack/plugins/LogPlugin.js +++ b/packages/docusaurus/src/webpack/plugins/LogPlugin.js @@ -16,9 +16,13 @@ class LogPlugin extends WebpackBar { super.apply(compiler); compiler.hooks.done.tap('WebpackNiceLog', stats => { - const messages = formatWebpackMessages(stats.toJson('errors-only', true)); - if (messages.errors.length) { - showError(messages.errors); + if (stats.hasErrors()) { + const messages = formatWebpackMessages( + stats.toJson('errors-only', true), + ); + if (messages.errors.length) { + showError(messages.errors); + } } }); } diff --git a/packages/docusaurus/src/webpack/utils.ts b/packages/docusaurus/src/webpack/utils.ts index 2b77199321cc..d72fe218f612 100644 --- a/packages/docusaurus/src/webpack/utils.ts +++ b/packages/docusaurus/src/webpack/utils.ts @@ -90,7 +90,14 @@ export function getBabelLoader(isServer: boolean, babelOptions?: {}): Loader { configFile: false, presets: [ isServer - ? '@babel/env' + ? [ + '@babel/env', + { + targets: { + node: 'current', + }, + }, + ] : [ '@babel/env', { diff --git a/website/docs/migrating-from-v1-to-v2.md b/website/docs/migrating-from-v1-to-v2.md index beac0aa6ca7c..5ebaee071531 100644 --- a/website/docs/migrating-from-v1-to-v2.md +++ b/website/docs/migrating-from-v1-to-v2.md @@ -37,8 +37,8 @@ Meanwhile, the default doc site functionalities provided by Docusaurus 1 are now { dependencies: { - "docusaurus": "^1.x.x", -+ "@docusaurus/core": "^2.0.0-alpha.29", -+ "@docusaurus/preset-classic": "^2.0.0-alpha.29", ++ "@docusaurus/core": "^2.0.0-alpha.30", ++ "@docusaurus/preset-classic": "^2.0.0-alpha.30", } } ``` @@ -71,8 +71,8 @@ A typical Docusaurus 2 `package.json` may look like this: "deploy": "docusaurus deploy" }, "dependencies": { - "@docusaurus/core": "^2.0.0-alpha.29", - "@docusaurus/preset-classic": "^2.0.0-alpha.29", + "@docusaurus/core": "^2.0.0-alpha.30", + "@docusaurus/preset-classic": "^2.0.0-alpha.30", "classnames": "^2.2.6", "react": "^16.10.2", "react-dom": "^16.10.2" diff --git a/yarn.lock b/yarn.lock index 6169869888f4..049498974fae 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4410,20 +4410,10 @@ caniuse-api@^3.0.0: lodash.memoize "^4.1.2" lodash.uniq "^4.5.0" -caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000971: - version "1.0.30000974" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000974.tgz#b7afe14ee004e97ce6dc73e3f878290a12928ad8" - integrity sha512-xc3rkNS/Zc3CmpMKuczWEdY2sZgx09BkAxfvkxlAEBTqcMHeL8QnPqhKse+5sRTi3nrw2pJwToD2WvKn1Uhvww== - -caniuse-lite@^1.0.30000980, caniuse-lite@^1.0.30000981, caniuse-lite@^1.0.30000984: - version "1.0.30000984" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000984.tgz#dc96c3c469e9bcfc6ad5bdd24c77ec918ea76fe0" - integrity sha512-n5tKOjMaZ1fksIpQbjERuqCyfgec/m9pferkFQbLmWtqLUdmt12hNhjSwsmPdqeiG2NkITOQhr1VYIwWSAceiA== - -caniuse-lite@^1.0.30000989: - version "1.0.30000989" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000989.tgz#b9193e293ccf7e4426c5245134b8f2a56c0ac4b9" - integrity sha512-vrMcvSuMz16YY6GSVZ0dWDTJP8jqk3iFQ/Aq5iqblPwxSVVZI+zxDyTX0VPqtQsDnfdrBDcsmhgTEOh5R8Lbpw== +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000971, caniuse-lite@^1.0.30000980, caniuse-lite@^1.0.30000981, caniuse-lite@^1.0.30000984, caniuse-lite@^1.0.30000989: + version "1.0.30001002" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001002.tgz#ba999a737b1abd5bf0fd47efe43a09b9cadbe9b0" + integrity sha512-pRuxPE8wdrWmVPKcDmJJiGBxr6lFJq4ivdSeo9FTmGj5Rb8NX3Mby2pARG57MXF15hYAhZ0nHV5XxT2ig4bz3g== capture-exit@^2.0.0: version "2.0.0"