From 8b7c6d608d95a5ebbf31bd9e997af4b472fa8e02 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ma=C3=ABl=20Nison?= Date: Thu, 12 Dec 2019 20:50:40 +0100 Subject: [PATCH 1/3] feat: adds transparent PnP support to Webpack --- packages/@vue/cli-service/lib/config/base.js | 9 ++++++++- packages/@vue/cli-service/package.json | 1 + yarn.lock | 20 ++++++++++++++++---- 3 files changed, 25 insertions(+), 5 deletions(-) diff --git a/packages/@vue/cli-service/lib/config/base.js b/packages/@vue/cli-service/lib/config/base.js index a9c17adcf4..246f72edb4 100644 --- a/packages/@vue/cli-service/lib/config/base.js +++ b/packages/@vue/cli-service/lib/config/base.js @@ -17,7 +17,7 @@ module.exports = (api, options) => { limit: inlineLimit, // use explicit fallback to avoid regression in url-loader>=1.1.0 fallback: { - loader: 'file-loader', + loader: require.resolve('file-loader'), options: { name: genAssetSubPath(dir) } @@ -37,6 +37,10 @@ module.exports = (api, options) => { .publicPath(options.publicPath) webpackConfig.resolve + // This plugin can be removed once we switch to Webpack 6 + .plugin() + .use(require('pnp-webpack-plugin')) + .end() .extensions .merge(['.mjs', '.js', '.jsx', '.vue', '.json', '.wasm']) .end() @@ -55,6 +59,9 @@ module.exports = (api, options) => { ) webpackConfig.resolveLoader + .plugin() + .use(require('pnp-webpack-plugin').topLevelLoader) + .end() .modules .add('node_modules') .add(api.resolve('node_modules')) diff --git a/packages/@vue/cli-service/package.json b/packages/@vue/cli-service/package.json index 56c017f63a..b797e9df0b 100644 --- a/packages/@vue/cli-service/package.json +++ b/packages/@vue/cli-service/package.json @@ -61,6 +61,7 @@ "lodash.transform": "^4.6.0", "mini-css-extract-plugin": "^0.8.0", "minimist": "^1.2.0", + "pnp-webpack-plugin": "^1.5.0", "portfinder": "^1.0.25", "postcss-loader": "^3.0.0", "read-pkg": "^5.1.1", diff --git a/yarn.lock b/yarn.lock index 3ef921bbb2..86d5150aab 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7045,7 +7045,7 @@ errorhandler@^1.5.1: accepts "~1.3.7" escape-html "~1.0.3" -es-abstract@^1.12.0, es-abstract@^1.4.3, es-abstract@^1.5.1, es-abstract@^1.7.0: +es-abstract@^1.12.0, es-abstract@^1.5.1, es-abstract@^1.7.0: version "1.16.2" resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.16.2.tgz#4e874331645e9925edef141e74fc4bd144669d34" integrity sha512-jYo/J8XU2emLXl3OLwfwtuFfuF2w6DYPs+xy9ZfVyPkDcrauu6LYrw/q2TyCtrbc/KUdCiC5e9UajRhgNkVopA== @@ -8277,7 +8277,7 @@ ftp@~0.3.10: readable-stream "1.1.x" xregexp "2.0.0" -function-bind@^1.0.2, function-bind@^1.1.1: +function-bind@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== @@ -13616,6 +13616,13 @@ pn@^1.1.0: resolved "https://registry.yarnpkg.com/pn/-/pn-1.1.0.tgz#e2f4cef0e219f463c179ab37463e4e1ecdccbafb" integrity sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA== +pnp-webpack-plugin@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/pnp-webpack-plugin/-/pnp-webpack-plugin-1.5.0.tgz#62a1cd3068f46d564bb33c56eb250e4d586676eb" + integrity sha512-jd9olUr9D7do+RN8Wspzhpxhgp1n6Vd0NtQ4SFkmIACZoEL1nkyAdW9Ygrinjec0vgDcWjscFQQ1gDW8rsfKTg== + dependencies: + ts-pnp "^1.1.2" + popper.js@^1.15.0: version "1.16.0" resolved "https://registry.yarnpkg.com/popper.js/-/popper.js-1.16.0.tgz#2e1816bcbbaa518ea6c2e15a466f4cb9c6e2fbb3" @@ -14266,7 +14273,7 @@ punycode@^2.1.0, punycode@^2.1.1: resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== -puppeteer@1.11.0, puppeteer@^1.11.0: +puppeteer@^1.11.0: version "1.11.0" resolved "https://registry.yarnpkg.com/puppeteer/-/puppeteer-1.11.0.tgz#63cdbe12b07275cd6e0b94bce41f3fcb20305770" integrity sha512-iG4iMOHixc2EpzqRV+pv7o3GgmU2dNYEMkvKwSaQO/vMZURakwSOn/EYJ6OIRFYOque1qorzIBvrytPIQB3YzQ== @@ -14839,7 +14846,7 @@ request-promise@^4.2.4: stealthy-require "^1.1.1" tough-cookie "^2.3.3" -request@2.88.0, request@^2.67.0, request@^2.83.0, request@^2.87.0, request@^2.88.0: +request@2.88.0, request@^2.67.0, request@^2.87.0, request@^2.88.0: version "2.88.0" resolved "https://registry.yarnpkg.com/request/-/request-2.88.0.tgz#9c2fca4f7d35b592efe57c7f0a55e81052124fef" integrity sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg== @@ -16698,6 +16705,11 @@ ts-node@^8, ts-node@^8.4.1: source-map-support "^0.5.6" yn "^3.0.0" +ts-pnp@^1.1.2: + version "1.1.5" + resolved "https://registry.yarnpkg.com/ts-pnp/-/ts-pnp-1.1.5.tgz#840e0739c89fce5f3abd9037bb091dbff16d9dec" + integrity sha512-ti7OGMOUOzo66wLF3liskw6YQIaSsBgc4GOAlWRnIEj8htCxJUxskanMUoJOD6MDCRAXo36goXJZch+nOS0VMA== + tsconfig@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/tsconfig/-/tsconfig-7.0.0.tgz#84538875a4dc216e5c4a5432b3a4dec3d54e91b7" From 075a61aaac9b6ff511e0e362497ce7662deffb8a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ma=C3=ABl=20Nison?= Date: Fri, 13 Dec 2019 12:15:55 +0100 Subject: [PATCH 2/3] fix: add the plugin name --- packages/@vue/cli-service/lib/config/base.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/@vue/cli-service/lib/config/base.js b/packages/@vue/cli-service/lib/config/base.js index 246f72edb4..4d2229ce3c 100644 --- a/packages/@vue/cli-service/lib/config/base.js +++ b/packages/@vue/cli-service/lib/config/base.js @@ -38,7 +38,7 @@ module.exports = (api, options) => { webpackConfig.resolve // This plugin can be removed once we switch to Webpack 6 - .plugin() + .plugin('pnp') .use(require('pnp-webpack-plugin')) .end() .extensions @@ -59,7 +59,7 @@ module.exports = (api, options) => { ) webpackConfig.resolveLoader - .plugin() + .plugin('pnp-loaders') .use(require('pnp-webpack-plugin').topLevelLoader) .end() .modules From 9926f9d19e7f4522703d5b9e2a7450cd4ca4a45a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ma=C3=ABl=20Nison?= Date: Fri, 13 Dec 2019 13:01:58 +0100 Subject: [PATCH 3/3] fix: now pass tests --- packages/@vue/cli-service/lib/config/base.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/@vue/cli-service/lib/config/base.js b/packages/@vue/cli-service/lib/config/base.js index 4d2229ce3c..5081e2f749 100644 --- a/packages/@vue/cli-service/lib/config/base.js +++ b/packages/@vue/cli-service/lib/config/base.js @@ -39,7 +39,7 @@ module.exports = (api, options) => { webpackConfig.resolve // This plugin can be removed once we switch to Webpack 6 .plugin('pnp') - .use(require('pnp-webpack-plugin')) + .use({ ...require('pnp-webpack-plugin') }) .end() .extensions .merge(['.mjs', '.js', '.jsx', '.vue', '.json', '.wasm']) @@ -60,7 +60,7 @@ module.exports = (api, options) => { webpackConfig.resolveLoader .plugin('pnp-loaders') - .use(require('pnp-webpack-plugin').topLevelLoader) + .use({ ...require('pnp-webpack-plugin').topLevelLoader }) .end() .modules .add('node_modules')