From 941bcf08f476925cb22399aa3d5bee753a5b9f8f Mon Sep 17 00:00:00 2001 From: Niklas Mischkulnig Date: Mon, 25 Feb 2019 16:26:02 +0100 Subject: [PATCH 1/3] For scope hoisting, Asset IDs cannot contain + or / (base64) --- packages/core/parcel-bundler/src/Asset.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/core/parcel-bundler/src/Asset.js b/packages/core/parcel-bundler/src/Asset.js index 92b443a021b..8f9c3b3815a 100644 --- a/packages/core/parcel-bundler/src/Asset.js +++ b/packages/core/parcel-bundler/src/Asset.js @@ -196,7 +196,9 @@ class Asset { if (!this.id) { this.id = this.options.production || this.options.scopeHoist - ? md5(this.relativeName, 'base64').slice(0, 4) + ? md5(this.relativeName, 'base64') + .slice(0, 4) + .replace(/\+\//g, '_') : this.relativeName; } From 2891207e841d4de136f339c62250e6457167e309 Mon Sep 17 00:00:00 2001 From: Niklas Mischkulnig Date: Mon, 25 Feb 2019 17:43:48 +0100 Subject: [PATCH 2/3] Revert "For scope hoisting, Asset IDs cannot contain + or / (base64)" This reverts commit 941bcf08f476925cb22399aa3d5bee753a5b9f8f. --- packages/core/parcel-bundler/src/Asset.js | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/packages/core/parcel-bundler/src/Asset.js b/packages/core/parcel-bundler/src/Asset.js index 8f9c3b3815a..92b443a021b 100644 --- a/packages/core/parcel-bundler/src/Asset.js +++ b/packages/core/parcel-bundler/src/Asset.js @@ -196,9 +196,7 @@ class Asset { if (!this.id) { this.id = this.options.production || this.options.scopeHoist - ? md5(this.relativeName, 'base64') - .slice(0, 4) - .replace(/\+\//g, '_') + ? md5(this.relativeName, 'base64').slice(0, 4) : this.relativeName; } From 6910953657fe6c2586f643a57d82297168107ddf Mon Sep 17 00:00:00 2001 From: Niklas Mischkulnig Date: Mon, 25 Feb 2019 17:44:24 +0100 Subject: [PATCH 3/3] VueAsset didn't normalize id for scope hoisting --- packages/core/parcel-bundler/src/assets/VueAsset.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/packages/core/parcel-bundler/src/assets/VueAsset.js b/packages/core/parcel-bundler/src/assets/VueAsset.js index 2214c08bc7d..ce9bb946794 100644 --- a/packages/core/parcel-bundler/src/assets/VueAsset.js +++ b/packages/core/parcel-bundler/src/assets/VueAsset.js @@ -2,6 +2,7 @@ const Asset = require('../Asset'); const localRequire = require('../utils/localRequire'); const md5 = require('../utils/md5'); const {minify} = require('terser'); +const t = require('@babel/types'); class VueAsset extends Asset { constructor(name, options) { @@ -72,10 +73,10 @@ class VueAsset extends Asset { // TODO: make it possible to process this code with the normal scope hoister if (this.options.scopeHoist) { - optsVar = `$${this.id}$export$default`; + optsVar = `$${t.toIdentifier(this.id)}$export$default`; if (!js.includes(optsVar)) { - optsVar = `$${this.id}$exports`; + optsVar = `$${t.toIdentifier(this.id)}$exports`; if (!js.includes(optsVar)) { supplemental += ` var ${optsVar} = {};