Some checks failed
Test examples / Test Examples (20) (push) Has been cancelled
Test examples / Test Examples (22) (push) Has been cancelled
Lock Threads / action (push) Has been cancelled
Trigger Release / start (push) Has been cancelled
Stale issue handler / stale (push) Has been cancelled
Update Font Data / create-pull-request (push) Has been cancelled
build-and-deploy / deploy-target (push) Has been cancelled
build-and-deploy / build (push) Has been cancelled
build-and-deploy / stable - aarch64-unknown-linux-musl - node@16 (push) Has been cancelled
build-and-deploy / stable - x86_64-unknown-linux-musl - node@16 (push) Has been cancelled
build-and-deploy / stable - aarch64-unknown-linux-gnu - node@16 (push) Has been cancelled
build-and-deploy / stable - x86_64-unknown-linux-gnu - node@16 (push) Has been cancelled
build-and-deploy / stable - aarch64-pc-windows-msvc - node@16 (push) Has been cancelled
build-and-deploy / stable - x86_64-pc-windows-msvc - node@16 (push) Has been cancelled
build-and-deploy / stable - aarch64-apple-darwin - node@16 (push) Has been cancelled
build-and-deploy / stable - x86_64-apple-darwin - node@16 (push) Has been cancelled
build-and-deploy / build-wasm (nodejs) (push) Has been cancelled
build-and-deploy / build-wasm (web) (push) Has been cancelled
build-and-deploy / Deploy preview tarball (push) Has been cancelled
build-and-deploy / Potentially publish release (push) Has been cancelled
build-and-deploy / publish-turbopack-npm-packages (push) Has been cancelled
build-and-deploy / Deploy examples (push) Has been cancelled
build-and-deploy / thank you, build (push) Has been cancelled
build-and-deploy / Upload Turbopack Bytesize metrics to Datadog (push) Has been cancelled
Rspack Next.js development integration tests / Rspack integration tests (push) Has been cancelled
Rspack Next.js production integration tests / Rspack integration tests (push) Has been cancelled
Turbopack Next.js development integration tests / Next.js integration tests (push) Has been cancelled
Turbopack Next.js production integration tests / Next.js integration tests (push) Has been cancelled
Update Rspack test manifest / Update and upload Rspack development test manifest (push) Has been cancelled
Update Rspack test manifest / Update and upload Rspack production test manifest (push) Has been cancelled
Upload bundler test manifests to areweturboyet.com / Upload test results (push) Has been cancelled
Update React / create-pull-request (push) Has been cancelled
test-e2e-project-reset-cron / reset-test-project (push) Has been cancelled
Notify about the top 15 issues/PRs/feature requests (most reacted) in the last 90 days / run (push) Has been cancelled
88 lines
2.7 KiB
JavaScript
88 lines
2.7 KiB
JavaScript
module.exports =
|
|
(pluginOptions = {}) =>
|
|
(inputConfig = {}) => {
|
|
const extension = pluginOptions.extension || /\.mdx$/
|
|
const userProvidedMdxOptions = pluginOptions.options
|
|
|
|
const mdxRsOptions = inputConfig?.experimental?.mdxRs
|
|
const loader = mdxRsOptions
|
|
? {
|
|
loader: require.resolve('./mdx-rs-loader'),
|
|
options: {
|
|
providerImportSource: 'next-mdx-import-source-file',
|
|
...userProvidedMdxOptions,
|
|
// mdxRsOptions is a union of boolean and object type of MdxTransformOptions
|
|
...(mdxRsOptions === true ? {} : mdxRsOptions),
|
|
},
|
|
}
|
|
: {
|
|
loader: require.resolve('./mdx-js-loader'),
|
|
options: {
|
|
providerImportSource: 'next-mdx-import-source-file',
|
|
...userProvidedMdxOptions,
|
|
},
|
|
}
|
|
|
|
/**
|
|
* @type {import('next').NextConfig}
|
|
*/
|
|
const nextConfig = {
|
|
...inputConfig,
|
|
webpack(config, options) {
|
|
config.resolve.alias['next-mdx-import-source-file'] = [
|
|
'private-next-root-dir/src/mdx-components',
|
|
'private-next-root-dir/mdx-components',
|
|
'@mdx-js/react',
|
|
require.resolve('./mdx-components.js'),
|
|
]
|
|
config.module.rules.push({
|
|
test: extension,
|
|
use: [options.defaultLoaders.babel, loader],
|
|
})
|
|
|
|
if (typeof inputConfig.webpack === 'function') {
|
|
return inputConfig.webpack(config, options)
|
|
}
|
|
|
|
return config
|
|
},
|
|
}
|
|
|
|
if (process.env.TURBOPACK) {
|
|
const mdxRule = {
|
|
loaders: [loader],
|
|
as: '*.tsx',
|
|
condition: {
|
|
path: extension,
|
|
},
|
|
}
|
|
|
|
// Use a unique glob string for two reasons:
|
|
// - This makes it clear where the rule was defined if someone needs to debug.
|
|
// - Reduces the chance of a collision (can still happen if `next-mdx` is applied twice with
|
|
// different options). Rule evaluation is ordering-sensitive, and a unique glob means we're
|
|
// less likely to break the ordering of existing rules.
|
|
let wildcardGlob = '{*,next-mdx-rule}'
|
|
let wildcardRule = inputConfig.turbopack?.rules?.[wildcardGlob] ?? []
|
|
wildcardRule = [
|
|
...(Array.isArray(wildcardRule) ? wildcardRule : [wildcardRule]),
|
|
mdxRule,
|
|
]
|
|
|
|
nextConfig.turbopack = {
|
|
...inputConfig?.turbopack,
|
|
rules: {
|
|
...inputConfig?.turbopack?.rules,
|
|
[wildcardGlob]: wildcardRule,
|
|
},
|
|
resolveAlias: {
|
|
...inputConfig?.turbopack?.resolveAlias,
|
|
'next-mdx-import-source-file':
|
|
'@vercel/turbopack-next/mdx-import-source',
|
|
},
|
|
}
|
|
}
|
|
|
|
return nextConfig
|
|
}
|