From ca297243f93cbfbb8192956195900c4786902e83 Mon Sep 17 00:00:00 2001 From: Kael Date: Wed, 12 May 2021 05:17:19 +1000 Subject: [PATCH 1/2] fix(SafariNomoduleFixPlugin): use RawSource instead of a plain object --- .../cli-service/lib/webpack/SafariNomoduleFixPlugin.js | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/packages/@vue/cli-service/lib/webpack/SafariNomoduleFixPlugin.js b/packages/@vue/cli-service/lib/webpack/SafariNomoduleFixPlugin.js index fef45a6416..33cf53cb60 100644 --- a/packages/@vue/cli-service/lib/webpack/SafariNomoduleFixPlugin.js +++ b/packages/@vue/cli-service/lib/webpack/SafariNomoduleFixPlugin.js @@ -23,6 +23,7 @@ class SafariNomoduleFixPlugin { if (!needsSafariFix) { return } + const { RawSource } = compiler.webpack.sources const ID = 'SafariNomoduleFixPlugin' compiler.hooks.compilation.tap(ID, compilation => { @@ -40,14 +41,7 @@ class SafariNomoduleFixPlugin { // inject the fix as an external script const safariFixPath = path.join(this.jsDirectory, 'safari-nomodule-fix.js') const fullSafariFixPath = path.join(compilation.options.output.publicPath, safariFixPath) - compilation.assets[safariFixPath] = { - source: function () { - return Buffer.from(safariFix) - }, - size: function () { - return Buffer.byteLength(safariFix) - } - } + compilation.assets[safariFixPath] = new RawSource(safariFix) scriptTag = { tagName: 'script', closeTag: true, From 0fd44c8d771fa345244b1996f36ce9ca24309bd6 Mon Sep 17 00:00:00 2001 From: Kael Date: Thu, 13 May 2021 00:04:47 +1000 Subject: [PATCH 2/2] fix: support webpack 4 --- .../@vue/cli-service/lib/webpack/SafariNomoduleFixPlugin.js | 4 +++- packages/@vue/cli-service/package.json | 3 ++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/packages/@vue/cli-service/lib/webpack/SafariNomoduleFixPlugin.js b/packages/@vue/cli-service/lib/webpack/SafariNomoduleFixPlugin.js index 33cf53cb60..2d4621e96b 100644 --- a/packages/@vue/cli-service/lib/webpack/SafariNomoduleFixPlugin.js +++ b/packages/@vue/cli-service/lib/webpack/SafariNomoduleFixPlugin.js @@ -23,7 +23,9 @@ class SafariNomoduleFixPlugin { if (!needsSafariFix) { return } - const { RawSource } = compiler.webpack.sources + const { RawSource } = compiler.webpack + ? compiler.webpack.sources + : require('webpack-sources') const ID = 'SafariNomoduleFixPlugin' compiler.hooks.compilation.tap(ID, compilation => { diff --git a/packages/@vue/cli-service/package.json b/packages/@vue/cli-service/package.json index 2221259a35..f8d3c7467f 100644 --- a/packages/@vue/cli-service/package.json +++ b/packages/@vue/cli-service/package.json @@ -83,7 +83,8 @@ }, "peerDependencies": { "@vue/compiler-sfc": "^3.0.0-beta.14", - "vue-template-compiler": "^2.0.0" + "vue-template-compiler": "^2.0.0", + "webpack-sources": "*" }, "peerDependenciesMeta": { "@vue/compiler-sfc": {