From e67174ea62a886c4dacc6e2993294ef9c4257482 Mon Sep 17 00:00:00 2001 From: Ben Scott Date: Sun, 14 Nov 2021 12:03:26 +0000 Subject: [PATCH 1/4] Use entryFileNames for virtual files when preserveModules is set --- src/Chunk.ts | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/src/Chunk.ts b/src/Chunk.ts index 2c9ab46305d..8aa8f4fef9c 100644 --- a/src/Chunk.ts +++ b/src/Chunk.ts @@ -434,12 +434,13 @@ export default class Chunk { const id = this.orderedModules[0].id; const sanitizedId = this.outputOptions.sanitizeFileName(id); let path: string; + const pattern = unsetOptions.has('entryFileNames') + ? '[name][assetExtname].js' + : options.entryFileNames; + if (isAbsolute(id)) { - const extension = extname(id); - const pattern = unsetOptions.has('entryFileNames') - ? '[name][assetExtname].js' - : options.entryFileNames; const currentDir = dirname(sanitizedId); + const extension = extname(id); const fileName = renderNamePattern( typeof pattern === 'function' ? pattern(this.getChunkInfo()) : pattern, 'output.entryFileNames', @@ -459,7 +460,19 @@ export default class Chunk { path = relative(preserveModulesRelativeDir, currentPath); } } else { - path = `_virtual/${basename(sanitizedId)}`; + const extension = extname(sanitizedId); + const fileName = renderNamePattern( + typeof pattern === 'function' ? pattern(this.getChunkInfo()) : pattern, + 'output.entryFileNames', + { + assetExtname: () => (NON_ASSET_EXTENSIONS.includes(extension) ? '' : extension), + ext: () => extension.substr(1), + extname: () => extension, + format: () => options.format as string, + name: () => getAliasName(sanitizedId) + } + ); + path = `_virtual/${fileName}`; } return makeUnique(normalize(path), existingNames); } From 8c5030d40243bb0180717078829739bab1d27273 Mon Sep 17 00:00:00 2001 From: Ben Scott Date: Sun, 14 Nov 2021 12:09:24 +0000 Subject: [PATCH 2/4] Fix existing tests - virtual files now have a .js extension by default - systemjs module references include this file extension - amd module references omit this file extension. this seems to be consistent with amd output of other chunks --- ...s-exports => other.js_commonjs-exports.js} | 0 ...s-exports => other.js_commonjs-exports.js} | 0 .../_expected/cjs/commonjs.js | 2 +- .../_expected/cjs/other.js | 2 +- ...s-exports => other.js_commonjs-exports.js} | 0 .../_expected/es/commonjs.js | 2 +- .../_expected/es/other.js | 4 ++-- ...s-exports => other.js_commonjs-exports.js} | 0 .../_expected/system/commonjs.js | 2 +- .../_expected/system/other.js | 2 +- .../{_virtualModule => _virtualModule.js} | 0 .../{_virtualModule => _virtualModule.js} | 0 .../_expected/cjs/main.js | 2 +- .../{_virtualModule => _virtualModule.js} | 0 .../_expected/es/main.js | 2 +- .../{_virtualModule => _virtualModule.js} | 0 .../_expected/system/main.js | 2 +- ...s-exports => other.js_commonjs-exports.js} | 0 ...s-exports => other.js_commonjs-exports.js} | 0 .../_expected/cjs/commonjs.js | 2 +- .../_expected/cjs/other.js | 2 +- ...s-exports => other.js_commonjs-exports.js} | 0 .../_expected/es/commonjs.js | 2 +- .../_expected/es/other.js | 4 ++-- ...s-exports => other.js_commonjs-exports.js} | 0 .../_expected/system/commonjs.js | 2 +- .../_expected/system/other.js | 2 +- ...s-exports => index.js_commonjs-exports.js} | 0 ...s-exports => index.js_commonjs-exports.js} | 0 .../_expected/cjs/below/module.js | 2 +- .../@my-scope/my-base-pkg/index.js | 2 +- .../_expected/cjs/under-build.js | 2 +- ...s-exports => index.js_commonjs-exports.js} | 0 .../_expected/es/below/module.js | 2 +- .../@my-scope/my-base-pkg/index.js | 4 ++-- .../_expected/es/under-build.js | 2 +- ...s-exports => index.js_commonjs-exports.js} | 0 .../_expected/system/below/module.js | 2 +- .../@my-scope/my-base-pkg/index.js | 2 +- .../_expected/system/under-build.js | 2 +- .../{_virtualModule => _virtualModule.js} | 0 .../{_virtualModule => _virtualModule.js} | 0 .../_expected/cjs/main.js | 2 +- .../{_virtualModule => _virtualModule.js} | 0 .../_expected/es/main.js | 2 +- .../{_virtualModule => _virtualModule.js} | 0 .../_expected/system/main.js | 2 +- .../virtual-modules/_config.js | 2 +- .../virtual-modules/_config.js | 2 +- test/misc/bundle-information.js | 19 ++++++++++++------- 50 files changed, 44 insertions(+), 39 deletions(-) rename test/chunking-form/samples/deprecated/preserve-modules-commonjs/_expected/amd/_virtual/{other.js_commonjs-exports => other.js_commonjs-exports.js} (100%) rename test/chunking-form/samples/deprecated/preserve-modules-commonjs/_expected/cjs/_virtual/{other.js_commonjs-exports => other.js_commonjs-exports.js} (100%) rename test/chunking-form/samples/deprecated/preserve-modules-commonjs/_expected/es/_virtual/{other.js_commonjs-exports => other.js_commonjs-exports.js} (100%) rename test/chunking-form/samples/deprecated/preserve-modules-commonjs/_expected/system/_virtual/{other.js_commonjs-exports => other.js_commonjs-exports.js} (100%) rename test/chunking-form/samples/deprecated/preserve-modules-virtual-modules/_expected/amd/_virtual/{_virtualModule => _virtualModule.js} (100%) rename test/chunking-form/samples/deprecated/preserve-modules-virtual-modules/_expected/cjs/_virtual/{_virtualModule => _virtualModule.js} (100%) rename test/chunking-form/samples/deprecated/preserve-modules-virtual-modules/_expected/es/_virtual/{_virtualModule => _virtualModule.js} (100%) rename test/chunking-form/samples/deprecated/preserve-modules-virtual-modules/_expected/system/_virtual/{_virtualModule => _virtualModule.js} (100%) rename test/chunking-form/samples/preserve-modules-commonjs/_expected/amd/_virtual/{other.js_commonjs-exports => other.js_commonjs-exports.js} (100%) rename test/chunking-form/samples/preserve-modules-commonjs/_expected/cjs/_virtual/{other.js_commonjs-exports => other.js_commonjs-exports.js} (100%) rename test/chunking-form/samples/preserve-modules-commonjs/_expected/es/_virtual/{other.js_commonjs-exports => other.js_commonjs-exports.js} (100%) rename test/chunking-form/samples/preserve-modules-commonjs/_expected/system/_virtual/{other.js_commonjs-exports => other.js_commonjs-exports.js} (100%) rename test/chunking-form/samples/preserve-modules-root/_expected/amd/_virtual/{index.js_commonjs-exports => index.js_commonjs-exports.js} (100%) rename test/chunking-form/samples/preserve-modules-root/_expected/cjs/_virtual/{index.js_commonjs-exports => index.js_commonjs-exports.js} (100%) rename test/chunking-form/samples/preserve-modules-root/_expected/es/_virtual/{index.js_commonjs-exports => index.js_commonjs-exports.js} (100%) rename test/chunking-form/samples/preserve-modules-root/_expected/system/_virtual/{index.js_commonjs-exports => index.js_commonjs-exports.js} (100%) rename test/chunking-form/samples/preserve-modules-virtual-modules/_expected/amd/_virtual/{_virtualModule => _virtualModule.js} (100%) rename test/chunking-form/samples/preserve-modules-virtual-modules/_expected/cjs/_virtual/{_virtualModule => _virtualModule.js} (100%) rename test/chunking-form/samples/preserve-modules-virtual-modules/_expected/es/_virtual/{_virtualModule => _virtualModule.js} (100%) rename test/chunking-form/samples/preserve-modules-virtual-modules/_expected/system/_virtual/{_virtualModule => _virtualModule.js} (100%) diff --git a/test/chunking-form/samples/deprecated/preserve-modules-commonjs/_expected/amd/_virtual/other.js_commonjs-exports b/test/chunking-form/samples/deprecated/preserve-modules-commonjs/_expected/amd/_virtual/other.js_commonjs-exports.js similarity index 100% rename from test/chunking-form/samples/deprecated/preserve-modules-commonjs/_expected/amd/_virtual/other.js_commonjs-exports rename to test/chunking-form/samples/deprecated/preserve-modules-commonjs/_expected/amd/_virtual/other.js_commonjs-exports.js diff --git a/test/chunking-form/samples/deprecated/preserve-modules-commonjs/_expected/cjs/_virtual/other.js_commonjs-exports b/test/chunking-form/samples/deprecated/preserve-modules-commonjs/_expected/cjs/_virtual/other.js_commonjs-exports.js similarity index 100% rename from test/chunking-form/samples/deprecated/preserve-modules-commonjs/_expected/cjs/_virtual/other.js_commonjs-exports rename to test/chunking-form/samples/deprecated/preserve-modules-commonjs/_expected/cjs/_virtual/other.js_commonjs-exports.js diff --git a/test/chunking-form/samples/deprecated/preserve-modules-commonjs/_expected/cjs/commonjs.js b/test/chunking-form/samples/deprecated/preserve-modules-commonjs/_expected/cjs/commonjs.js index 9d8a2671e86..4f3a50071b2 100644 --- a/test/chunking-form/samples/deprecated/preserve-modules-commonjs/_expected/cjs/commonjs.js +++ b/test/chunking-form/samples/deprecated/preserve-modules-commonjs/_expected/cjs/commonjs.js @@ -2,7 +2,7 @@ var require$$0 = require('external'); require('./other.js'); -var other = require('./_virtual/other.js_commonjs-exports'); +var other = require('./_virtual/other.js_commonjs-exports.js'); function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } diff --git a/test/chunking-form/samples/deprecated/preserve-modules-commonjs/_expected/cjs/other.js b/test/chunking-form/samples/deprecated/preserve-modules-commonjs/_expected/cjs/other.js index a514a7d358f..0c28672ba27 100644 --- a/test/chunking-form/samples/deprecated/preserve-modules-commonjs/_expected/cjs/other.js +++ b/test/chunking-form/samples/deprecated/preserve-modules-commonjs/_expected/cjs/other.js @@ -1,6 +1,6 @@ 'use strict'; -var other = require('./_virtual/other.js_commonjs-exports'); +var other = require('./_virtual/other.js_commonjs-exports.js'); other.__exports.value = 43; diff --git a/test/chunking-form/samples/deprecated/preserve-modules-commonjs/_expected/es/_virtual/other.js_commonjs-exports b/test/chunking-form/samples/deprecated/preserve-modules-commonjs/_expected/es/_virtual/other.js_commonjs-exports.js similarity index 100% rename from test/chunking-form/samples/deprecated/preserve-modules-commonjs/_expected/es/_virtual/other.js_commonjs-exports rename to test/chunking-form/samples/deprecated/preserve-modules-commonjs/_expected/es/_virtual/other.js_commonjs-exports.js diff --git a/test/chunking-form/samples/deprecated/preserve-modules-commonjs/_expected/es/commonjs.js b/test/chunking-form/samples/deprecated/preserve-modules-commonjs/_expected/es/commonjs.js index a301391b5fc..643dfd6b0ac 100644 --- a/test/chunking-form/samples/deprecated/preserve-modules-commonjs/_expected/es/commonjs.js +++ b/test/chunking-form/samples/deprecated/preserve-modules-commonjs/_expected/es/commonjs.js @@ -1,6 +1,6 @@ import require$$0 from 'external'; import './other.js'; -import { __exports as other } from './_virtual/other.js_commonjs-exports'; +import { __exports as other } from './_virtual/other.js_commonjs-exports.js'; const external = require$$0; const { value } = other; diff --git a/test/chunking-form/samples/deprecated/preserve-modules-commonjs/_expected/es/other.js b/test/chunking-form/samples/deprecated/preserve-modules-commonjs/_expected/es/other.js index f9d6ad0cb3c..180a5f6c9d5 100644 --- a/test/chunking-form/samples/deprecated/preserve-modules-commonjs/_expected/es/other.js +++ b/test/chunking-form/samples/deprecated/preserve-modules-commonjs/_expected/es/other.js @@ -1,4 +1,4 @@ -import { __exports as other } from './_virtual/other.js_commonjs-exports'; -export { __exports as default } from './_virtual/other.js_commonjs-exports'; +import { __exports as other } from './_virtual/other.js_commonjs-exports.js'; +export { __exports as default } from './_virtual/other.js_commonjs-exports.js'; other.value = 43; diff --git a/test/chunking-form/samples/deprecated/preserve-modules-commonjs/_expected/system/_virtual/other.js_commonjs-exports b/test/chunking-form/samples/deprecated/preserve-modules-commonjs/_expected/system/_virtual/other.js_commonjs-exports.js similarity index 100% rename from test/chunking-form/samples/deprecated/preserve-modules-commonjs/_expected/system/_virtual/other.js_commonjs-exports rename to test/chunking-form/samples/deprecated/preserve-modules-commonjs/_expected/system/_virtual/other.js_commonjs-exports.js diff --git a/test/chunking-form/samples/deprecated/preserve-modules-commonjs/_expected/system/commonjs.js b/test/chunking-form/samples/deprecated/preserve-modules-commonjs/_expected/system/commonjs.js index 0df36bf9a75..e5183e581cc 100644 --- a/test/chunking-form/samples/deprecated/preserve-modules-commonjs/_expected/system/commonjs.js +++ b/test/chunking-form/samples/deprecated/preserve-modules-commonjs/_expected/system/commonjs.js @@ -1,4 +1,4 @@ -System.register(['external', './other.js', './_virtual/other.js_commonjs-exports'], (function (exports) { +System.register(['external', './other.js', './_virtual/other.js_commonjs-exports.js'], (function (exports) { 'use strict'; var require$$0, other; return { diff --git a/test/chunking-form/samples/deprecated/preserve-modules-commonjs/_expected/system/other.js b/test/chunking-form/samples/deprecated/preserve-modules-commonjs/_expected/system/other.js index 0c908825185..6fd8ed491ce 100644 --- a/test/chunking-form/samples/deprecated/preserve-modules-commonjs/_expected/system/other.js +++ b/test/chunking-form/samples/deprecated/preserve-modules-commonjs/_expected/system/other.js @@ -1,4 +1,4 @@ -System.register(['./_virtual/other.js_commonjs-exports'], (function (exports) { +System.register(['./_virtual/other.js_commonjs-exports.js'], (function (exports) { 'use strict'; var other; return { diff --git a/test/chunking-form/samples/deprecated/preserve-modules-virtual-modules/_expected/amd/_virtual/_virtualModule b/test/chunking-form/samples/deprecated/preserve-modules-virtual-modules/_expected/amd/_virtual/_virtualModule.js similarity index 100% rename from test/chunking-form/samples/deprecated/preserve-modules-virtual-modules/_expected/amd/_virtual/_virtualModule rename to test/chunking-form/samples/deprecated/preserve-modules-virtual-modules/_expected/amd/_virtual/_virtualModule.js diff --git a/test/chunking-form/samples/deprecated/preserve-modules-virtual-modules/_expected/cjs/_virtual/_virtualModule b/test/chunking-form/samples/deprecated/preserve-modules-virtual-modules/_expected/cjs/_virtual/_virtualModule.js similarity index 100% rename from test/chunking-form/samples/deprecated/preserve-modules-virtual-modules/_expected/cjs/_virtual/_virtualModule rename to test/chunking-form/samples/deprecated/preserve-modules-virtual-modules/_expected/cjs/_virtual/_virtualModule.js diff --git a/test/chunking-form/samples/deprecated/preserve-modules-virtual-modules/_expected/cjs/main.js b/test/chunking-form/samples/deprecated/preserve-modules-virtual-modules/_expected/cjs/main.js index c32672f1b85..a3d4133c5c7 100644 --- a/test/chunking-form/samples/deprecated/preserve-modules-virtual-modules/_expected/cjs/main.js +++ b/test/chunking-form/samples/deprecated/preserve-modules-virtual-modules/_expected/cjs/main.js @@ -1,5 +1,5 @@ 'use strict'; -var _virtualModule = require('./_virtual/_virtualModule'); +var _virtualModule = require('./_virtual/_virtualModule.js'); assert.equal(_virtualModule.virtual, 'Virtual!'); diff --git a/test/chunking-form/samples/deprecated/preserve-modules-virtual-modules/_expected/es/_virtual/_virtualModule b/test/chunking-form/samples/deprecated/preserve-modules-virtual-modules/_expected/es/_virtual/_virtualModule.js similarity index 100% rename from test/chunking-form/samples/deprecated/preserve-modules-virtual-modules/_expected/es/_virtual/_virtualModule rename to test/chunking-form/samples/deprecated/preserve-modules-virtual-modules/_expected/es/_virtual/_virtualModule.js diff --git a/test/chunking-form/samples/deprecated/preserve-modules-virtual-modules/_expected/es/main.js b/test/chunking-form/samples/deprecated/preserve-modules-virtual-modules/_expected/es/main.js index 6bb75abdf27..96f7b331789 100644 --- a/test/chunking-form/samples/deprecated/preserve-modules-virtual-modules/_expected/es/main.js +++ b/test/chunking-form/samples/deprecated/preserve-modules-virtual-modules/_expected/es/main.js @@ -1,3 +1,3 @@ -import { virtual } from './_virtual/_virtualModule'; +import { virtual } from './_virtual/_virtualModule.js'; assert.equal(virtual, 'Virtual!'); diff --git a/test/chunking-form/samples/deprecated/preserve-modules-virtual-modules/_expected/system/_virtual/_virtualModule b/test/chunking-form/samples/deprecated/preserve-modules-virtual-modules/_expected/system/_virtual/_virtualModule.js similarity index 100% rename from test/chunking-form/samples/deprecated/preserve-modules-virtual-modules/_expected/system/_virtual/_virtualModule rename to test/chunking-form/samples/deprecated/preserve-modules-virtual-modules/_expected/system/_virtual/_virtualModule.js diff --git a/test/chunking-form/samples/deprecated/preserve-modules-virtual-modules/_expected/system/main.js b/test/chunking-form/samples/deprecated/preserve-modules-virtual-modules/_expected/system/main.js index eed2c557e47..f92fd60397b 100644 --- a/test/chunking-form/samples/deprecated/preserve-modules-virtual-modules/_expected/system/main.js +++ b/test/chunking-form/samples/deprecated/preserve-modules-virtual-modules/_expected/system/main.js @@ -1,4 +1,4 @@ -System.register(['./_virtual/_virtualModule'], (function () { +System.register(['./_virtual/_virtualModule.js'], (function () { 'use strict'; var virtual; return { diff --git a/test/chunking-form/samples/preserve-modules-commonjs/_expected/amd/_virtual/other.js_commonjs-exports b/test/chunking-form/samples/preserve-modules-commonjs/_expected/amd/_virtual/other.js_commonjs-exports.js similarity index 100% rename from test/chunking-form/samples/preserve-modules-commonjs/_expected/amd/_virtual/other.js_commonjs-exports rename to test/chunking-form/samples/preserve-modules-commonjs/_expected/amd/_virtual/other.js_commonjs-exports.js diff --git a/test/chunking-form/samples/preserve-modules-commonjs/_expected/cjs/_virtual/other.js_commonjs-exports b/test/chunking-form/samples/preserve-modules-commonjs/_expected/cjs/_virtual/other.js_commonjs-exports.js similarity index 100% rename from test/chunking-form/samples/preserve-modules-commonjs/_expected/cjs/_virtual/other.js_commonjs-exports rename to test/chunking-form/samples/preserve-modules-commonjs/_expected/cjs/_virtual/other.js_commonjs-exports.js diff --git a/test/chunking-form/samples/preserve-modules-commonjs/_expected/cjs/commonjs.js b/test/chunking-form/samples/preserve-modules-commonjs/_expected/cjs/commonjs.js index 9d8a2671e86..4f3a50071b2 100644 --- a/test/chunking-form/samples/preserve-modules-commonjs/_expected/cjs/commonjs.js +++ b/test/chunking-form/samples/preserve-modules-commonjs/_expected/cjs/commonjs.js @@ -2,7 +2,7 @@ var require$$0 = require('external'); require('./other.js'); -var other = require('./_virtual/other.js_commonjs-exports'); +var other = require('./_virtual/other.js_commonjs-exports.js'); function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } diff --git a/test/chunking-form/samples/preserve-modules-commonjs/_expected/cjs/other.js b/test/chunking-form/samples/preserve-modules-commonjs/_expected/cjs/other.js index a514a7d358f..0c28672ba27 100644 --- a/test/chunking-form/samples/preserve-modules-commonjs/_expected/cjs/other.js +++ b/test/chunking-form/samples/preserve-modules-commonjs/_expected/cjs/other.js @@ -1,6 +1,6 @@ 'use strict'; -var other = require('./_virtual/other.js_commonjs-exports'); +var other = require('./_virtual/other.js_commonjs-exports.js'); other.__exports.value = 43; diff --git a/test/chunking-form/samples/preserve-modules-commonjs/_expected/es/_virtual/other.js_commonjs-exports b/test/chunking-form/samples/preserve-modules-commonjs/_expected/es/_virtual/other.js_commonjs-exports.js similarity index 100% rename from test/chunking-form/samples/preserve-modules-commonjs/_expected/es/_virtual/other.js_commonjs-exports rename to test/chunking-form/samples/preserve-modules-commonjs/_expected/es/_virtual/other.js_commonjs-exports.js diff --git a/test/chunking-form/samples/preserve-modules-commonjs/_expected/es/commonjs.js b/test/chunking-form/samples/preserve-modules-commonjs/_expected/es/commonjs.js index a301391b5fc..643dfd6b0ac 100644 --- a/test/chunking-form/samples/preserve-modules-commonjs/_expected/es/commonjs.js +++ b/test/chunking-form/samples/preserve-modules-commonjs/_expected/es/commonjs.js @@ -1,6 +1,6 @@ import require$$0 from 'external'; import './other.js'; -import { __exports as other } from './_virtual/other.js_commonjs-exports'; +import { __exports as other } from './_virtual/other.js_commonjs-exports.js'; const external = require$$0; const { value } = other; diff --git a/test/chunking-form/samples/preserve-modules-commonjs/_expected/es/other.js b/test/chunking-form/samples/preserve-modules-commonjs/_expected/es/other.js index f9d6ad0cb3c..180a5f6c9d5 100644 --- a/test/chunking-form/samples/preserve-modules-commonjs/_expected/es/other.js +++ b/test/chunking-form/samples/preserve-modules-commonjs/_expected/es/other.js @@ -1,4 +1,4 @@ -import { __exports as other } from './_virtual/other.js_commonjs-exports'; -export { __exports as default } from './_virtual/other.js_commonjs-exports'; +import { __exports as other } from './_virtual/other.js_commonjs-exports.js'; +export { __exports as default } from './_virtual/other.js_commonjs-exports.js'; other.value = 43; diff --git a/test/chunking-form/samples/preserve-modules-commonjs/_expected/system/_virtual/other.js_commonjs-exports b/test/chunking-form/samples/preserve-modules-commonjs/_expected/system/_virtual/other.js_commonjs-exports.js similarity index 100% rename from test/chunking-form/samples/preserve-modules-commonjs/_expected/system/_virtual/other.js_commonjs-exports rename to test/chunking-form/samples/preserve-modules-commonjs/_expected/system/_virtual/other.js_commonjs-exports.js diff --git a/test/chunking-form/samples/preserve-modules-commonjs/_expected/system/commonjs.js b/test/chunking-form/samples/preserve-modules-commonjs/_expected/system/commonjs.js index 0df36bf9a75..e5183e581cc 100644 --- a/test/chunking-form/samples/preserve-modules-commonjs/_expected/system/commonjs.js +++ b/test/chunking-form/samples/preserve-modules-commonjs/_expected/system/commonjs.js @@ -1,4 +1,4 @@ -System.register(['external', './other.js', './_virtual/other.js_commonjs-exports'], (function (exports) { +System.register(['external', './other.js', './_virtual/other.js_commonjs-exports.js'], (function (exports) { 'use strict'; var require$$0, other; return { diff --git a/test/chunking-form/samples/preserve-modules-commonjs/_expected/system/other.js b/test/chunking-form/samples/preserve-modules-commonjs/_expected/system/other.js index 0c908825185..6fd8ed491ce 100644 --- a/test/chunking-form/samples/preserve-modules-commonjs/_expected/system/other.js +++ b/test/chunking-form/samples/preserve-modules-commonjs/_expected/system/other.js @@ -1,4 +1,4 @@ -System.register(['./_virtual/other.js_commonjs-exports'], (function (exports) { +System.register(['./_virtual/other.js_commonjs-exports.js'], (function (exports) { 'use strict'; var other; return { diff --git a/test/chunking-form/samples/preserve-modules-root/_expected/amd/_virtual/index.js_commonjs-exports b/test/chunking-form/samples/preserve-modules-root/_expected/amd/_virtual/index.js_commonjs-exports.js similarity index 100% rename from test/chunking-form/samples/preserve-modules-root/_expected/amd/_virtual/index.js_commonjs-exports rename to test/chunking-form/samples/preserve-modules-root/_expected/amd/_virtual/index.js_commonjs-exports.js diff --git a/test/chunking-form/samples/preserve-modules-root/_expected/cjs/_virtual/index.js_commonjs-exports b/test/chunking-form/samples/preserve-modules-root/_expected/cjs/_virtual/index.js_commonjs-exports.js similarity index 100% rename from test/chunking-form/samples/preserve-modules-root/_expected/cjs/_virtual/index.js_commonjs-exports rename to test/chunking-form/samples/preserve-modules-root/_expected/cjs/_virtual/index.js_commonjs-exports.js diff --git a/test/chunking-form/samples/preserve-modules-root/_expected/cjs/below/module.js b/test/chunking-form/samples/preserve-modules-root/_expected/cjs/below/module.js index e3a47727a0d..24502570011 100644 --- a/test/chunking-form/samples/preserve-modules-root/_expected/cjs/below/module.js +++ b/test/chunking-form/samples/preserve-modules-root/_expected/cjs/below/module.js @@ -1,7 +1,7 @@ 'use strict'; require('../custom_modules/@my-scope/my-base-pkg/index.js'); -var index = require('../_virtual/index.js_commonjs-exports'); +var index = require('../_virtual/index.js_commonjs-exports.js'); const base2 = index.__exports; diff --git a/test/chunking-form/samples/preserve-modules-root/_expected/cjs/custom_modules/@my-scope/my-base-pkg/index.js b/test/chunking-form/samples/preserve-modules-root/_expected/cjs/custom_modules/@my-scope/my-base-pkg/index.js index 64f5ebacc3f..5766b8f61f1 100644 --- a/test/chunking-form/samples/preserve-modules-root/_expected/cjs/custom_modules/@my-scope/my-base-pkg/index.js +++ b/test/chunking-form/samples/preserve-modules-root/_expected/cjs/custom_modules/@my-scope/my-base-pkg/index.js @@ -1,6 +1,6 @@ 'use strict'; -var index = require('../../../_virtual/index.js_commonjs-exports'); +var index = require('../../../_virtual/index.js_commonjs-exports.js'); Object.defineProperty(index.__exports, '__esModule', { value: true }); diff --git a/test/chunking-form/samples/preserve-modules-root/_expected/cjs/under-build.js b/test/chunking-form/samples/preserve-modules-root/_expected/cjs/under-build.js index 60f12b2b07f..dc269d6be5c 100644 --- a/test/chunking-form/samples/preserve-modules-root/_expected/cjs/under-build.js +++ b/test/chunking-form/samples/preserve-modules-root/_expected/cjs/under-build.js @@ -1,7 +1,7 @@ 'use strict'; require('./custom_modules/@my-scope/my-base-pkg/index.js'); -var index = require('./_virtual/index.js_commonjs-exports'); +var index = require('./_virtual/index.js_commonjs-exports.js'); const base = index.__exports; diff --git a/test/chunking-form/samples/preserve-modules-root/_expected/es/_virtual/index.js_commonjs-exports b/test/chunking-form/samples/preserve-modules-root/_expected/es/_virtual/index.js_commonjs-exports.js similarity index 100% rename from test/chunking-form/samples/preserve-modules-root/_expected/es/_virtual/index.js_commonjs-exports rename to test/chunking-form/samples/preserve-modules-root/_expected/es/_virtual/index.js_commonjs-exports.js diff --git a/test/chunking-form/samples/preserve-modules-root/_expected/es/below/module.js b/test/chunking-form/samples/preserve-modules-root/_expected/es/below/module.js index b0b5587c304..594640e5d5a 100644 --- a/test/chunking-form/samples/preserve-modules-root/_expected/es/below/module.js +++ b/test/chunking-form/samples/preserve-modules-root/_expected/es/below/module.js @@ -1,5 +1,5 @@ import '../custom_modules/@my-scope/my-base-pkg/index.js'; -import { __exports as myBasePkg } from '../_virtual/index.js_commonjs-exports'; +import { __exports as myBasePkg } from '../_virtual/index.js_commonjs-exports.js'; const base2 = myBasePkg; diff --git a/test/chunking-form/samples/preserve-modules-root/_expected/es/custom_modules/@my-scope/my-base-pkg/index.js b/test/chunking-form/samples/preserve-modules-root/_expected/es/custom_modules/@my-scope/my-base-pkg/index.js index 5c1ff69b019..d77cdc8b84e 100644 --- a/test/chunking-form/samples/preserve-modules-root/_expected/es/custom_modules/@my-scope/my-base-pkg/index.js +++ b/test/chunking-form/samples/preserve-modules-root/_expected/es/custom_modules/@my-scope/my-base-pkg/index.js @@ -1,5 +1,5 @@ -import { __exports as myBasePkg } from '../../../_virtual/index.js_commonjs-exports'; -export { __exports as default } from '../../../_virtual/index.js_commonjs-exports'; +import { __exports as myBasePkg } from '../../../_virtual/index.js_commonjs-exports.js'; +export { __exports as default } from '../../../_virtual/index.js_commonjs-exports.js'; Object.defineProperty(myBasePkg, '__esModule', { value: true }); diff --git a/test/chunking-form/samples/preserve-modules-root/_expected/es/under-build.js b/test/chunking-form/samples/preserve-modules-root/_expected/es/under-build.js index 17be990060c..4bc029cb9f9 100644 --- a/test/chunking-form/samples/preserve-modules-root/_expected/es/under-build.js +++ b/test/chunking-form/samples/preserve-modules-root/_expected/es/under-build.js @@ -1,5 +1,5 @@ import './custom_modules/@my-scope/my-base-pkg/index.js'; -import { __exports as myBasePkg } from './_virtual/index.js_commonjs-exports'; +import { __exports as myBasePkg } from './_virtual/index.js_commonjs-exports.js'; const base = myBasePkg; diff --git a/test/chunking-form/samples/preserve-modules-root/_expected/system/_virtual/index.js_commonjs-exports b/test/chunking-form/samples/preserve-modules-root/_expected/system/_virtual/index.js_commonjs-exports.js similarity index 100% rename from test/chunking-form/samples/preserve-modules-root/_expected/system/_virtual/index.js_commonjs-exports rename to test/chunking-form/samples/preserve-modules-root/_expected/system/_virtual/index.js_commonjs-exports.js diff --git a/test/chunking-form/samples/preserve-modules-root/_expected/system/below/module.js b/test/chunking-form/samples/preserve-modules-root/_expected/system/below/module.js index 9544e4c8178..baeb375c26d 100644 --- a/test/chunking-form/samples/preserve-modules-root/_expected/system/below/module.js +++ b/test/chunking-form/samples/preserve-modules-root/_expected/system/below/module.js @@ -1,4 +1,4 @@ -System.register(['../custom_modules/@my-scope/my-base-pkg/index.js', '../_virtual/index.js_commonjs-exports'], (function (exports) { +System.register(['../custom_modules/@my-scope/my-base-pkg/index.js', '../_virtual/index.js_commonjs-exports.js'], (function (exports) { 'use strict'; var myBasePkg; return { diff --git a/test/chunking-form/samples/preserve-modules-root/_expected/system/custom_modules/@my-scope/my-base-pkg/index.js b/test/chunking-form/samples/preserve-modules-root/_expected/system/custom_modules/@my-scope/my-base-pkg/index.js index 840aa037c93..6151b15c986 100644 --- a/test/chunking-form/samples/preserve-modules-root/_expected/system/custom_modules/@my-scope/my-base-pkg/index.js +++ b/test/chunking-form/samples/preserve-modules-root/_expected/system/custom_modules/@my-scope/my-base-pkg/index.js @@ -1,4 +1,4 @@ -System.register(['../../../_virtual/index.js_commonjs-exports'], (function (exports) { +System.register(['../../../_virtual/index.js_commonjs-exports.js'], (function (exports) { 'use strict'; var myBasePkg; return { diff --git a/test/chunking-form/samples/preserve-modules-root/_expected/system/under-build.js b/test/chunking-form/samples/preserve-modules-root/_expected/system/under-build.js index 178399de6aa..ff4a383d998 100644 --- a/test/chunking-form/samples/preserve-modules-root/_expected/system/under-build.js +++ b/test/chunking-form/samples/preserve-modules-root/_expected/system/under-build.js @@ -1,4 +1,4 @@ -System.register(['./custom_modules/@my-scope/my-base-pkg/index.js', './_virtual/index.js_commonjs-exports'], (function (exports) { +System.register(['./custom_modules/@my-scope/my-base-pkg/index.js', './_virtual/index.js_commonjs-exports.js'], (function (exports) { 'use strict'; var myBasePkg; return { diff --git a/test/chunking-form/samples/preserve-modules-virtual-modules/_expected/amd/_virtual/_virtualModule b/test/chunking-form/samples/preserve-modules-virtual-modules/_expected/amd/_virtual/_virtualModule.js similarity index 100% rename from test/chunking-form/samples/preserve-modules-virtual-modules/_expected/amd/_virtual/_virtualModule rename to test/chunking-form/samples/preserve-modules-virtual-modules/_expected/amd/_virtual/_virtualModule.js diff --git a/test/chunking-form/samples/preserve-modules-virtual-modules/_expected/cjs/_virtual/_virtualModule b/test/chunking-form/samples/preserve-modules-virtual-modules/_expected/cjs/_virtual/_virtualModule.js similarity index 100% rename from test/chunking-form/samples/preserve-modules-virtual-modules/_expected/cjs/_virtual/_virtualModule rename to test/chunking-form/samples/preserve-modules-virtual-modules/_expected/cjs/_virtual/_virtualModule.js diff --git a/test/chunking-form/samples/preserve-modules-virtual-modules/_expected/cjs/main.js b/test/chunking-form/samples/preserve-modules-virtual-modules/_expected/cjs/main.js index c32672f1b85..a3d4133c5c7 100644 --- a/test/chunking-form/samples/preserve-modules-virtual-modules/_expected/cjs/main.js +++ b/test/chunking-form/samples/preserve-modules-virtual-modules/_expected/cjs/main.js @@ -1,5 +1,5 @@ 'use strict'; -var _virtualModule = require('./_virtual/_virtualModule'); +var _virtualModule = require('./_virtual/_virtualModule.js'); assert.equal(_virtualModule.virtual, 'Virtual!'); diff --git a/test/chunking-form/samples/preserve-modules-virtual-modules/_expected/es/_virtual/_virtualModule b/test/chunking-form/samples/preserve-modules-virtual-modules/_expected/es/_virtual/_virtualModule.js similarity index 100% rename from test/chunking-form/samples/preserve-modules-virtual-modules/_expected/es/_virtual/_virtualModule rename to test/chunking-form/samples/preserve-modules-virtual-modules/_expected/es/_virtual/_virtualModule.js diff --git a/test/chunking-form/samples/preserve-modules-virtual-modules/_expected/es/main.js b/test/chunking-form/samples/preserve-modules-virtual-modules/_expected/es/main.js index 6bb75abdf27..96f7b331789 100644 --- a/test/chunking-form/samples/preserve-modules-virtual-modules/_expected/es/main.js +++ b/test/chunking-form/samples/preserve-modules-virtual-modules/_expected/es/main.js @@ -1,3 +1,3 @@ -import { virtual } from './_virtual/_virtualModule'; +import { virtual } from './_virtual/_virtualModule.js'; assert.equal(virtual, 'Virtual!'); diff --git a/test/chunking-form/samples/preserve-modules-virtual-modules/_expected/system/_virtual/_virtualModule b/test/chunking-form/samples/preserve-modules-virtual-modules/_expected/system/_virtual/_virtualModule.js similarity index 100% rename from test/chunking-form/samples/preserve-modules-virtual-modules/_expected/system/_virtual/_virtualModule rename to test/chunking-form/samples/preserve-modules-virtual-modules/_expected/system/_virtual/_virtualModule.js diff --git a/test/chunking-form/samples/preserve-modules-virtual-modules/_expected/system/main.js b/test/chunking-form/samples/preserve-modules-virtual-modules/_expected/system/main.js index eed2c557e47..f92fd60397b 100644 --- a/test/chunking-form/samples/preserve-modules-virtual-modules/_expected/system/main.js +++ b/test/chunking-form/samples/preserve-modules-virtual-modules/_expected/system/main.js @@ -1,4 +1,4 @@ -System.register(['./_virtual/_virtualModule'], (function () { +System.register(['./_virtual/_virtualModule.js'], (function () { 'use strict'; var virtual; return { diff --git a/test/function/samples/deprecated/preserveModules/virtual-modules/_config.js b/test/function/samples/deprecated/preserveModules/virtual-modules/_config.js index 47d4dfa4303..ece89c970b4 100644 --- a/test/function/samples/deprecated/preserveModules/virtual-modules/_config.js +++ b/test/function/samples/deprecated/preserveModules/virtual-modules/_config.js @@ -26,7 +26,7 @@ module.exports = { return bundle.generate({ format: 'es' }).then(generated => assert.deepEqual( generated.output.map(chunk => chunk.fileName), - ['main.js', '_virtual/_virtualModule', 'lib/lib.js'] + ['main.js', '_virtual/_virtualModule.js', 'lib/lib.js'] ) ); } diff --git a/test/function/samples/preserve-modules/virtual-modules/_config.js b/test/function/samples/preserve-modules/virtual-modules/_config.js index 8965977575f..6749601a266 100644 --- a/test/function/samples/preserve-modules/virtual-modules/_config.js +++ b/test/function/samples/preserve-modules/virtual-modules/_config.js @@ -23,7 +23,7 @@ module.exports = { return bundle.generate({ format: 'es', preserveModules: true }).then(generated => assert.deepEqual( generated.output.map(chunk => chunk.fileName), - ['main.js', '_virtual/_virtualModule', 'lib/lib.js'] + ['main.js', '_virtual/_virtualModule.js', 'lib/lib.js'] ) ); } diff --git a/test/misc/bundle-information.js b/test/misc/bundle-information.js index e45ac2fa5e3..69c24e226ce 100644 --- a/test/misc/bundle-information.js +++ b/test/misc/bundle-information.js @@ -480,7 +480,12 @@ describe('The bundle object', () => { .then(({ output }) => { assert.deepEqual( output.map(chunk => chunk.fileName), - ['_virtual/input', '_virtual/dynamic1', '_virtual/other', '_virtual/dynamic2'], + [ + '_virtual/input.js', + '_virtual/dynamic1.js', + '_virtual/other.js', + '_virtual/dynamic2.js' + ], 'fileName' ); assert.deepEqual( @@ -491,9 +496,9 @@ describe('The bundle object', () => { assert.deepEqual( output.map(chunk => chunk.code), [ - `import { other } from './other'; + `import { other } from './other.js'; -console.log(other);Promise.all([import('./dynamic1'), import('./dynamic2')]).then(([{dynamic1}, {dynamic2}]) => console.log(dynamic1, dynamic2));\n`, +console.log(other);Promise.all([import('./dynamic1.js'), import('./dynamic2.js')]).then(([{dynamic1}, {dynamic2}]) => console.log(dynamic1, dynamic2));\n`, 'const dynamic1 = "dynamic1";\n\nexport { dynamic1 };\n', 'const other = "other";\n\nexport { other };\n', 'const dynamic2 = "dynamic2";\n\nexport { dynamic2 };\n' @@ -507,12 +512,12 @@ console.log(other);Promise.all([import('./dynamic1'), import('./dynamic2')]).the ); assert.deepEqual( output.map(chunk => chunk.imports), - [['_virtual/other'], [], [], []], + [['_virtual/other.js'], [], [], []], 'imports' ); assert.deepEqual( output.map(chunk => chunk.importedBindings), - [{ '_virtual/other': ['other'] }, {}, {}, {}], + [{ '_virtual/other.js': ['other'] }, {}, {}, {}], 'importedBindings' ); assert.deepEqual( @@ -522,7 +527,7 @@ console.log(other);Promise.all([import('./dynamic1'), import('./dynamic2')]).the ); assert.deepEqual( output.map(chunk => chunk.dynamicImports), - [['_virtual/dynamic1', '_virtual/dynamic2'], [], [], []], + [['_virtual/dynamic1.js', '_virtual/dynamic2.js'], [], [], []], 'dynamicImports' ); assert.deepEqual( @@ -530,7 +535,7 @@ console.log(other);Promise.all([import('./dynamic1'), import('./dynamic2')]).the [ { input: { - code: "console.log(other);Promise.all([import('./dynamic1'), import('./dynamic2')]).then(([{dynamic1}, {dynamic2}]) => console.log(dynamic1, dynamic2));", + code: "console.log(other);Promise.all([import('./dynamic1.js'), import('./dynamic2.js')]).then(([{dynamic1}, {dynamic2}]) => console.log(dynamic1, dynamic2));", originalLength: 169, removedExports: [], renderedExports: [], From 8f3747b3538dcf98cec3308d37b4ea369c68ce05 Mon Sep 17 00:00:00 2001 From: Ben Scott Date: Sun, 14 Nov 2021 12:17:22 +0000 Subject: [PATCH 3/4] Add new test for virtual file output when modifying entryFileNames Use entryFileNames to change the extension of the filename to be mjs, and see that the file created from the virtual file chunk has a .mjs extension Note that the amd definition contains the .mjs extension, as amd ids only strip the .js file extension, which is slightly odd but probably ok as this amd is not the targetted usecase for this behaviour --- .../_config.js | 34 +++++++++++++++++++ .../_virtual/entry-_virtualModule-amd-.mjs | 9 +++++ ...y-_virtualWithAssetExt-amd-str.str.str.mjs | 9 +++++ .../entry-_virtualWithExt-amd-js.js.mjs | 9 +++++ .../_expected/amd/entry-main-amd-js.js.mjs | 7 ++++ .../_virtual/entry-_virtualModule-cjs-.mjs | 7 ++++ ...y-_virtualWithAssetExt-cjs-str.str.str.mjs | 7 ++++ .../entry-_virtualWithExt-cjs-js.js.mjs | 7 ++++ .../_expected/cjs/entry-main-cjs-js.js.mjs | 9 +++++ .../es/_virtual/entry-_virtualModule-es-.mjs | 3 ++ ...ry-_virtualWithAssetExt-es-str.str.str.mjs | 3 ++ .../entry-_virtualWithExt-es-js.js.mjs | 3 ++ .../_expected/es/entry-main-es-js.js.mjs | 7 ++++ .../_virtual/entry-_virtualModule-system-.mjs | 10 ++++++ ...virtualWithAssetExt-system-str.str.str.mjs | 10 ++++++ .../entry-_virtualWithExt-system-js.js.mjs | 10 ++++++ .../system/entry-main-system-js.js.mjs | 20 +++++++++++ .../main.js | 3 ++ 18 files changed, 167 insertions(+) create mode 100644 test/chunking-form/samples/preserve-modules-virtual-modules-filename-pattern/_config.js create mode 100644 test/chunking-form/samples/preserve-modules-virtual-modules-filename-pattern/_expected/amd/_virtual/entry-_virtualModule-amd-.mjs create mode 100644 test/chunking-form/samples/preserve-modules-virtual-modules-filename-pattern/_expected/amd/_virtual/entry-_virtualWithAssetExt-amd-str.str.str.mjs create mode 100644 test/chunking-form/samples/preserve-modules-virtual-modules-filename-pattern/_expected/amd/_virtual/entry-_virtualWithExt-amd-js.js.mjs create mode 100644 test/chunking-form/samples/preserve-modules-virtual-modules-filename-pattern/_expected/amd/entry-main-amd-js.js.mjs create mode 100644 test/chunking-form/samples/preserve-modules-virtual-modules-filename-pattern/_expected/cjs/_virtual/entry-_virtualModule-cjs-.mjs create mode 100644 test/chunking-form/samples/preserve-modules-virtual-modules-filename-pattern/_expected/cjs/_virtual/entry-_virtualWithAssetExt-cjs-str.str.str.mjs create mode 100644 test/chunking-form/samples/preserve-modules-virtual-modules-filename-pattern/_expected/cjs/_virtual/entry-_virtualWithExt-cjs-js.js.mjs create mode 100644 test/chunking-form/samples/preserve-modules-virtual-modules-filename-pattern/_expected/cjs/entry-main-cjs-js.js.mjs create mode 100644 test/chunking-form/samples/preserve-modules-virtual-modules-filename-pattern/_expected/es/_virtual/entry-_virtualModule-es-.mjs create mode 100644 test/chunking-form/samples/preserve-modules-virtual-modules-filename-pattern/_expected/es/_virtual/entry-_virtualWithAssetExt-es-str.str.str.mjs create mode 100644 test/chunking-form/samples/preserve-modules-virtual-modules-filename-pattern/_expected/es/_virtual/entry-_virtualWithExt-es-js.js.mjs create mode 100644 test/chunking-form/samples/preserve-modules-virtual-modules-filename-pattern/_expected/es/entry-main-es-js.js.mjs create mode 100644 test/chunking-form/samples/preserve-modules-virtual-modules-filename-pattern/_expected/system/_virtual/entry-_virtualModule-system-.mjs create mode 100644 test/chunking-form/samples/preserve-modules-virtual-modules-filename-pattern/_expected/system/_virtual/entry-_virtualWithAssetExt-system-str.str.str.mjs create mode 100644 test/chunking-form/samples/preserve-modules-virtual-modules-filename-pattern/_expected/system/_virtual/entry-_virtualWithExt-system-js.js.mjs create mode 100644 test/chunking-form/samples/preserve-modules-virtual-modules-filename-pattern/_expected/system/entry-main-system-js.js.mjs create mode 100644 test/chunking-form/samples/preserve-modules-virtual-modules-filename-pattern/main.js diff --git a/test/chunking-form/samples/preserve-modules-virtual-modules-filename-pattern/_config.js b/test/chunking-form/samples/preserve-modules-virtual-modules-filename-pattern/_config.js new file mode 100644 index 00000000000..7fb5e301d03 --- /dev/null +++ b/test/chunking-form/samples/preserve-modules-virtual-modules-filename-pattern/_config.js @@ -0,0 +1,34 @@ +module.exports = { + description: + 'Generates actual files whose filename adheres to entryFileNames for virtual modules when preserving modules', + options: { + input: 'main.js', + output: { + preserveModules: true, + entryFileNames: 'entry-[name]-[format]-[ext][extname][assetExtname].mjs' + }, + plugins: [ + { + resolveId(id) { + if (id === '\0virtualModule') return id; + if (id === '\0virtualWithExt.js') return id; + if (id === '\0virtualWithAssetExt.str') return id; + }, + load(id) { + if (id === '\0virtualModule') return 'export const virtual = "Virtual!";\n'; + if (id === '\0virtualWithExt.js') return 'export const virtual2 = "Virtual2!";\n'; + if (id === '\0virtualWithAssetExt.str') return 'export const virtual3 = "Virtual3!";\n'; + }, + transform(code, id) { + if (id === '\0virtualModule') return null; + if (id === '\0virtualWithExt.js') return null; + if (id === '\0virtualWithAssetExt.str') return null; + return ( + 'import {virtual} from "\0virtualModule";\nimport {virtual2} from "\0virtualWithExt.js";\nimport {virtual3} from "\0virtualWithAssetExt.str";' + + code + ); + } + } + ] + } +}; diff --git a/test/chunking-form/samples/preserve-modules-virtual-modules-filename-pattern/_expected/amd/_virtual/entry-_virtualModule-amd-.mjs b/test/chunking-form/samples/preserve-modules-virtual-modules-filename-pattern/_expected/amd/_virtual/entry-_virtualModule-amd-.mjs new file mode 100644 index 00000000000..ce212753ac0 --- /dev/null +++ b/test/chunking-form/samples/preserve-modules-virtual-modules-filename-pattern/_expected/amd/_virtual/entry-_virtualModule-amd-.mjs @@ -0,0 +1,9 @@ +define(['exports'], (function (exports) { 'use strict'; + + const virtual = "Virtual!"; + + exports.virtual = virtual; + + Object.defineProperty(exports, '__esModule', { value: true }); + +})); diff --git a/test/chunking-form/samples/preserve-modules-virtual-modules-filename-pattern/_expected/amd/_virtual/entry-_virtualWithAssetExt-amd-str.str.str.mjs b/test/chunking-form/samples/preserve-modules-virtual-modules-filename-pattern/_expected/amd/_virtual/entry-_virtualWithAssetExt-amd-str.str.str.mjs new file mode 100644 index 00000000000..41ae4d0466c --- /dev/null +++ b/test/chunking-form/samples/preserve-modules-virtual-modules-filename-pattern/_expected/amd/_virtual/entry-_virtualWithAssetExt-amd-str.str.str.mjs @@ -0,0 +1,9 @@ +define(['exports'], (function (exports) { 'use strict'; + + const virtual3 = "Virtual3!"; + + exports.virtual3 = virtual3; + + Object.defineProperty(exports, '__esModule', { value: true }); + +})); diff --git a/test/chunking-form/samples/preserve-modules-virtual-modules-filename-pattern/_expected/amd/_virtual/entry-_virtualWithExt-amd-js.js.mjs b/test/chunking-form/samples/preserve-modules-virtual-modules-filename-pattern/_expected/amd/_virtual/entry-_virtualWithExt-amd-js.js.mjs new file mode 100644 index 00000000000..b59abe59669 --- /dev/null +++ b/test/chunking-form/samples/preserve-modules-virtual-modules-filename-pattern/_expected/amd/_virtual/entry-_virtualWithExt-amd-js.js.mjs @@ -0,0 +1,9 @@ +define(['exports'], (function (exports) { 'use strict'; + + const virtual2 = "Virtual2!"; + + exports.virtual2 = virtual2; + + Object.defineProperty(exports, '__esModule', { value: true }); + +})); diff --git a/test/chunking-form/samples/preserve-modules-virtual-modules-filename-pattern/_expected/amd/entry-main-amd-js.js.mjs b/test/chunking-form/samples/preserve-modules-virtual-modules-filename-pattern/_expected/amd/entry-main-amd-js.js.mjs new file mode 100644 index 00000000000..27fc4a86228 --- /dev/null +++ b/test/chunking-form/samples/preserve-modules-virtual-modules-filename-pattern/_expected/amd/entry-main-amd-js.js.mjs @@ -0,0 +1,7 @@ +define(['./_virtual/entry-_virtualModule-amd-.mjs', './_virtual/entry-_virtualWithExt-amd-js.js.mjs', './_virtual/entry-_virtualWithAssetExt-amd-str.str.str.mjs'], (function (_virtualModule, _virtualWithExt, _virtualWithAssetExt) { 'use strict'; + + assert.equal(_virtualModule.virtual, 'Virtual!'); + assert.equal(_virtualWithExt.virtual2, 'Virtual2!'); + assert.equal(_virtualWithAssetExt.virtual3, 'Virtual3!'); + +})); diff --git a/test/chunking-form/samples/preserve-modules-virtual-modules-filename-pattern/_expected/cjs/_virtual/entry-_virtualModule-cjs-.mjs b/test/chunking-form/samples/preserve-modules-virtual-modules-filename-pattern/_expected/cjs/_virtual/entry-_virtualModule-cjs-.mjs new file mode 100644 index 00000000000..3b40ebf67c2 --- /dev/null +++ b/test/chunking-form/samples/preserve-modules-virtual-modules-filename-pattern/_expected/cjs/_virtual/entry-_virtualModule-cjs-.mjs @@ -0,0 +1,7 @@ +'use strict'; + +Object.defineProperty(exports, '__esModule', { value: true }); + +const virtual = "Virtual!"; + +exports.virtual = virtual; diff --git a/test/chunking-form/samples/preserve-modules-virtual-modules-filename-pattern/_expected/cjs/_virtual/entry-_virtualWithAssetExt-cjs-str.str.str.mjs b/test/chunking-form/samples/preserve-modules-virtual-modules-filename-pattern/_expected/cjs/_virtual/entry-_virtualWithAssetExt-cjs-str.str.str.mjs new file mode 100644 index 00000000000..1be612fa656 --- /dev/null +++ b/test/chunking-form/samples/preserve-modules-virtual-modules-filename-pattern/_expected/cjs/_virtual/entry-_virtualWithAssetExt-cjs-str.str.str.mjs @@ -0,0 +1,7 @@ +'use strict'; + +Object.defineProperty(exports, '__esModule', { value: true }); + +const virtual3 = "Virtual3!"; + +exports.virtual3 = virtual3; diff --git a/test/chunking-form/samples/preserve-modules-virtual-modules-filename-pattern/_expected/cjs/_virtual/entry-_virtualWithExt-cjs-js.js.mjs b/test/chunking-form/samples/preserve-modules-virtual-modules-filename-pattern/_expected/cjs/_virtual/entry-_virtualWithExt-cjs-js.js.mjs new file mode 100644 index 00000000000..6c1f17fcbe4 --- /dev/null +++ b/test/chunking-form/samples/preserve-modules-virtual-modules-filename-pattern/_expected/cjs/_virtual/entry-_virtualWithExt-cjs-js.js.mjs @@ -0,0 +1,7 @@ +'use strict'; + +Object.defineProperty(exports, '__esModule', { value: true }); + +const virtual2 = "Virtual2!"; + +exports.virtual2 = virtual2; diff --git a/test/chunking-form/samples/preserve-modules-virtual-modules-filename-pattern/_expected/cjs/entry-main-cjs-js.js.mjs b/test/chunking-form/samples/preserve-modules-virtual-modules-filename-pattern/_expected/cjs/entry-main-cjs-js.js.mjs new file mode 100644 index 00000000000..fc2cfa868da --- /dev/null +++ b/test/chunking-form/samples/preserve-modules-virtual-modules-filename-pattern/_expected/cjs/entry-main-cjs-js.js.mjs @@ -0,0 +1,9 @@ +'use strict'; + +var _virtualModule = require('./_virtual/entry-_virtualModule-cjs-.mjs'); +var _virtualWithExt = require('./_virtual/entry-_virtualWithExt-cjs-js.js.mjs'); +var _virtualWithAssetExt = require('./_virtual/entry-_virtualWithAssetExt-cjs-str.str.str.mjs'); + +assert.equal(_virtualModule.virtual, 'Virtual!'); +assert.equal(_virtualWithExt.virtual2, 'Virtual2!'); +assert.equal(_virtualWithAssetExt.virtual3, 'Virtual3!'); diff --git a/test/chunking-form/samples/preserve-modules-virtual-modules-filename-pattern/_expected/es/_virtual/entry-_virtualModule-es-.mjs b/test/chunking-form/samples/preserve-modules-virtual-modules-filename-pattern/_expected/es/_virtual/entry-_virtualModule-es-.mjs new file mode 100644 index 00000000000..2bada18c396 --- /dev/null +++ b/test/chunking-form/samples/preserve-modules-virtual-modules-filename-pattern/_expected/es/_virtual/entry-_virtualModule-es-.mjs @@ -0,0 +1,3 @@ +const virtual = "Virtual!"; + +export { virtual }; diff --git a/test/chunking-form/samples/preserve-modules-virtual-modules-filename-pattern/_expected/es/_virtual/entry-_virtualWithAssetExt-es-str.str.str.mjs b/test/chunking-form/samples/preserve-modules-virtual-modules-filename-pattern/_expected/es/_virtual/entry-_virtualWithAssetExt-es-str.str.str.mjs new file mode 100644 index 00000000000..51e7e8dd9ed --- /dev/null +++ b/test/chunking-form/samples/preserve-modules-virtual-modules-filename-pattern/_expected/es/_virtual/entry-_virtualWithAssetExt-es-str.str.str.mjs @@ -0,0 +1,3 @@ +const virtual3 = "Virtual3!"; + +export { virtual3 }; diff --git a/test/chunking-form/samples/preserve-modules-virtual-modules-filename-pattern/_expected/es/_virtual/entry-_virtualWithExt-es-js.js.mjs b/test/chunking-form/samples/preserve-modules-virtual-modules-filename-pattern/_expected/es/_virtual/entry-_virtualWithExt-es-js.js.mjs new file mode 100644 index 00000000000..b5c5634d0a3 --- /dev/null +++ b/test/chunking-form/samples/preserve-modules-virtual-modules-filename-pattern/_expected/es/_virtual/entry-_virtualWithExt-es-js.js.mjs @@ -0,0 +1,3 @@ +const virtual2 = "Virtual2!"; + +export { virtual2 }; diff --git a/test/chunking-form/samples/preserve-modules-virtual-modules-filename-pattern/_expected/es/entry-main-es-js.js.mjs b/test/chunking-form/samples/preserve-modules-virtual-modules-filename-pattern/_expected/es/entry-main-es-js.js.mjs new file mode 100644 index 00000000000..4f449ad7730 --- /dev/null +++ b/test/chunking-form/samples/preserve-modules-virtual-modules-filename-pattern/_expected/es/entry-main-es-js.js.mjs @@ -0,0 +1,7 @@ +import { virtual } from './_virtual/entry-_virtualModule-es-.mjs'; +import { virtual2 } from './_virtual/entry-_virtualWithExt-es-js.js.mjs'; +import { virtual3 } from './_virtual/entry-_virtualWithAssetExt-es-str.str.str.mjs'; + +assert.equal(virtual, 'Virtual!'); +assert.equal(virtual2, 'Virtual2!'); +assert.equal(virtual3, 'Virtual3!'); diff --git a/test/chunking-form/samples/preserve-modules-virtual-modules-filename-pattern/_expected/system/_virtual/entry-_virtualModule-system-.mjs b/test/chunking-form/samples/preserve-modules-virtual-modules-filename-pattern/_expected/system/_virtual/entry-_virtualModule-system-.mjs new file mode 100644 index 00000000000..51cfccb8a68 --- /dev/null +++ b/test/chunking-form/samples/preserve-modules-virtual-modules-filename-pattern/_expected/system/_virtual/entry-_virtualModule-system-.mjs @@ -0,0 +1,10 @@ +System.register([], (function (exports) { + 'use strict'; + return { + execute: (function () { + + const virtual = exports('virtual', "Virtual!"); + + }) + }; +})); diff --git a/test/chunking-form/samples/preserve-modules-virtual-modules-filename-pattern/_expected/system/_virtual/entry-_virtualWithAssetExt-system-str.str.str.mjs b/test/chunking-form/samples/preserve-modules-virtual-modules-filename-pattern/_expected/system/_virtual/entry-_virtualWithAssetExt-system-str.str.str.mjs new file mode 100644 index 00000000000..d81822443bb --- /dev/null +++ b/test/chunking-form/samples/preserve-modules-virtual-modules-filename-pattern/_expected/system/_virtual/entry-_virtualWithAssetExt-system-str.str.str.mjs @@ -0,0 +1,10 @@ +System.register([], (function (exports) { + 'use strict'; + return { + execute: (function () { + + const virtual3 = exports('virtual3', "Virtual3!"); + + }) + }; +})); diff --git a/test/chunking-form/samples/preserve-modules-virtual-modules-filename-pattern/_expected/system/_virtual/entry-_virtualWithExt-system-js.js.mjs b/test/chunking-form/samples/preserve-modules-virtual-modules-filename-pattern/_expected/system/_virtual/entry-_virtualWithExt-system-js.js.mjs new file mode 100644 index 00000000000..3a4749cd582 --- /dev/null +++ b/test/chunking-form/samples/preserve-modules-virtual-modules-filename-pattern/_expected/system/_virtual/entry-_virtualWithExt-system-js.js.mjs @@ -0,0 +1,10 @@ +System.register([], (function (exports) { + 'use strict'; + return { + execute: (function () { + + const virtual2 = exports('virtual2', "Virtual2!"); + + }) + }; +})); diff --git a/test/chunking-form/samples/preserve-modules-virtual-modules-filename-pattern/_expected/system/entry-main-system-js.js.mjs b/test/chunking-form/samples/preserve-modules-virtual-modules-filename-pattern/_expected/system/entry-main-system-js.js.mjs new file mode 100644 index 00000000000..f9381cf4e12 --- /dev/null +++ b/test/chunking-form/samples/preserve-modules-virtual-modules-filename-pattern/_expected/system/entry-main-system-js.js.mjs @@ -0,0 +1,20 @@ +System.register(['./_virtual/entry-_virtualModule-system-.mjs', './_virtual/entry-_virtualWithExt-system-js.js.mjs', './_virtual/entry-_virtualWithAssetExt-system-str.str.str.mjs'], (function () { + 'use strict'; + var virtual, virtual2, virtual3; + return { + setters: [function (module) { + virtual = module.virtual; + }, function (module) { + virtual2 = module.virtual2; + }, function (module) { + virtual3 = module.virtual3; + }], + execute: (function () { + + assert.equal(virtual, 'Virtual!'); + assert.equal(virtual2, 'Virtual2!'); + assert.equal(virtual3, 'Virtual3!'); + + }) + }; +})); diff --git a/test/chunking-form/samples/preserve-modules-virtual-modules-filename-pattern/main.js b/test/chunking-form/samples/preserve-modules-virtual-modules-filename-pattern/main.js new file mode 100644 index 00000000000..f5d5d01a912 --- /dev/null +++ b/test/chunking-form/samples/preserve-modules-virtual-modules-filename-pattern/main.js @@ -0,0 +1,3 @@ +assert.equal(virtual, 'Virtual!'); +assert.equal(virtual2, 'Virtual2!'); +assert.equal(virtual3, 'Virtual3!'); From 9d368052b302f6adedcfd8ce0f3947aedf274d3b Mon Sep 17 00:00:00 2001 From: Ben Scott Date: Mon, 15 Nov 2021 20:46:53 +0000 Subject: [PATCH 4/4] Refactor - don't repeat pattern generation logic --- src/Chunk.ts | 40 +++++++++++++++++----------------------- 1 file changed, 17 insertions(+), 23 deletions(-) diff --git a/src/Chunk.ts b/src/Chunk.ts index 8aa8f4fef9c..e7e48a4fb3f 100644 --- a/src/Chunk.ts +++ b/src/Chunk.ts @@ -434,24 +434,22 @@ export default class Chunk { const id = this.orderedModules[0].id; const sanitizedId = this.outputOptions.sanitizeFileName(id); let path: string; - const pattern = unsetOptions.has('entryFileNames') + + const patternOpt = unsetOptions.has('entryFileNames') ? '[name][assetExtname].js' : options.entryFileNames; + const pattern = typeof patternOpt === 'function' ? patternOpt(this.getChunkInfo()) : patternOpt; if (isAbsolute(id)) { const currentDir = dirname(sanitizedId); const extension = extname(id); - const fileName = renderNamePattern( - typeof pattern === 'function' ? pattern(this.getChunkInfo()) : pattern, - 'output.entryFileNames', - { - assetExtname: () => (NON_ASSET_EXTENSIONS.includes(extension) ? '' : extension), - ext: () => extension.substr(1), - extname: () => extension, - format: () => options.format as string, - name: () => this.getChunkName() - } - ); + const fileName = renderNamePattern(pattern, 'output.entryFileNames', { + assetExtname: () => (NON_ASSET_EXTENSIONS.includes(extension) ? '' : extension), + ext: () => extension.substr(1), + extname: () => extension, + format: () => options.format as string, + name: () => this.getChunkName() + }); const currentPath = `${currentDir}/${fileName}`; const { preserveModulesRoot } = options; if (preserveModulesRoot && currentPath.startsWith(preserveModulesRoot)) { @@ -461,17 +459,13 @@ export default class Chunk { } } else { const extension = extname(sanitizedId); - const fileName = renderNamePattern( - typeof pattern === 'function' ? pattern(this.getChunkInfo()) : pattern, - 'output.entryFileNames', - { - assetExtname: () => (NON_ASSET_EXTENSIONS.includes(extension) ? '' : extension), - ext: () => extension.substr(1), - extname: () => extension, - format: () => options.format as string, - name: () => getAliasName(sanitizedId) - } - ); + const fileName = renderNamePattern(pattern, 'output.entryFileNames', { + assetExtname: () => (NON_ASSET_EXTENSIONS.includes(extension) ? '' : extension), + ext: () => extension.substr(1), + extname: () => extension, + format: () => options.format as string, + name: () => getAliasName(sanitizedId) + }); path = `_virtual/${fileName}`; } return makeUnique(normalize(path), existingNames);