From 7c0772e0fdc56f0edd5334a409d9f1f144e53f60 Mon Sep 17 00:00:00 2001 From: Mark Dalgleish Date: Thu, 7 Aug 2025 16:56:23 +1000 Subject: [PATCH 1/2] Handle query parameters in Vite --- packages/rollup/lib/index.js | 11 ++++++----- packages/rollup/test/index.js | 23 +++++++++++++++++++++++ 2 files changed, 29 insertions(+), 5 deletions(-) diff --git a/packages/rollup/lib/index.js b/packages/rollup/lib/index.js index ddbf4a0eb..82af59724 100644 --- a/packages/rollup/lib/index.js +++ b/packages/rollup/lib/index.js @@ -53,6 +53,7 @@ */ import {createFormatAwareProcessors} from '@mdx-js/mdx/internal-create-format-aware-processors' +import {extnamesToRegex} from '@mdx-js/mdx/internal-extnames-to-regex' import {createFilter} from '@rollup/pluginutils' import {SourceMapGenerator} from 'source-map' import {VFile} from 'vfile' @@ -69,6 +70,8 @@ export function rollup(options) { const {exclude, include, ...rest} = options || {} /** @type {FormatAwareProcessors} */ let formatAwareProcessors + /** @type {RegExp} */ + let extnameRegex const filter = createFilter(include, exclude) return { @@ -79,6 +82,7 @@ export function rollup(options) { development: env.mode === 'development', ...rest }) + extnameRegex = extnamesToRegex(formatAwareProcessors.extnames) }, async transform(value, path) { if (!formatAwareProcessors) { @@ -86,15 +90,12 @@ export function rollup(options) { SourceMapGenerator, ...rest }) + extnameRegex = extnamesToRegex(formatAwareProcessors.extnames) } const file = new VFile({path, value}) - if ( - file.extname && - filter(file.path) && - formatAwareProcessors.extnames.includes(file.extname) - ) { + if (file.extname && filter(file.path) && extnameRegex.test(file.path)) { const compiled = await formatAwareProcessors.process(file) const code = String(compiled.value) /** @type {SourceDescription} */ diff --git a/packages/rollup/test/index.js b/packages/rollup/test/index.js index e8e308ced..4d826ca2d 100644 --- a/packages/rollup/test/index.js +++ b/packages/rollup/test/index.js @@ -101,4 +101,27 @@ test('@mdx-js/rollup', async function (t) { assert.doesNotMatch(code, /jsxs?\(/) assert.match(code, /jsxDEV\(/) }) + + await t.test('should handle query parameters in vite', async () => { + const result = /** @type {Array} */ ( + await build({ + build: { + lib: { + entry: + fileURLToPath(new URL('vite-entry.mdx', import.meta.url)) + + '?query=param', + name: 'query' + }, + write: false + }, + logLevel: 'silent', + plugins: [rollupMdx()] + }) + ) + + const code = result[0].output[0].code + + assert.match(code, /Hello Vite/) + assert.match(code, /jsxs?\(/) + }) }) From 7b7ca45d86834fda672920bb1273b51d2b8a7afe Mon Sep 17 00:00:00 2001 From: Mark Dalgleish Date: Thu, 7 Aug 2025 20:03:31 +1000 Subject: [PATCH 2/2] Extract path from module ID --- packages/rollup/lib/index.js | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/packages/rollup/lib/index.js b/packages/rollup/lib/index.js index 82af59724..78a00c03e 100644 --- a/packages/rollup/lib/index.js +++ b/packages/rollup/lib/index.js @@ -32,8 +32,8 @@ * Callback called by Rollup and Vite to transform. * @param {string} value * File contents. - * @param {string} path - * File path. + * @param {string} id + * Module ID. * @returns {Promise} * Result. * @@ -53,7 +53,6 @@ */ import {createFormatAwareProcessors} from '@mdx-js/mdx/internal-create-format-aware-processors' -import {extnamesToRegex} from '@mdx-js/mdx/internal-extnames-to-regex' import {createFilter} from '@rollup/pluginutils' import {SourceMapGenerator} from 'source-map' import {VFile} from 'vfile' @@ -70,8 +69,6 @@ export function rollup(options) { const {exclude, include, ...rest} = options || {} /** @type {FormatAwareProcessors} */ let formatAwareProcessors - /** @type {RegExp} */ - let extnameRegex const filter = createFilter(include, exclude) return { @@ -82,20 +79,23 @@ export function rollup(options) { development: env.mode === 'development', ...rest }) - extnameRegex = extnamesToRegex(formatAwareProcessors.extnames) }, - async transform(value, path) { + async transform(value, id) { if (!formatAwareProcessors) { formatAwareProcessors = createFormatAwareProcessors({ SourceMapGenerator, ...rest }) - extnameRegex = extnamesToRegex(formatAwareProcessors.extnames) } + const [path] = id.split('?') const file = new VFile({path, value}) - if (file.extname && filter(file.path) && extnameRegex.test(file.path)) { + if ( + file.extname && + filter(file.path) && + formatAwareProcessors.extnames.includes(file.extname) + ) { const compiled = await formatAwareProcessors.process(file) const code = String(compiled.value) /** @type {SourceDescription} */