Capítulo 250 de 456
Opção top-level turbopack para customizar como o Turbopack (bundler Rust do Next.js) transforma arquivos e resolve módulos: root dir, webpack loaders compatíveis, tipos de módulo, aliases de resolução, extensões, e debug IDs. Substitui o antigo experimental.turbo (13.0.0-15.2.x, ainda funciona como alias).
root: path absoluto para o diretório raiz da aplicação; Turbopack só resolve módulos dentro dele (detectado automaticamente via lockfiles, pnpm-lock.yaml/package-lock.json/yarn.lock/bun.lock(b)).rules: mapeia extensões/globs de arquivo a uma lista de webpack loaders suportados, com as para renomear a saída e type para setar o module type.resolveAlias: equivalente a resolve.alias do webpack, com suporte a alias condicional (browser).resolveExtensions: sobrescreve a lista de extensões resolvidas na importação (deve incluir os defaults).debugIds: gera debug IDs nos bundles JS e source maps.with { turbopackLoader: ... }): aplica um loader Turbopack por import individual, sem afetar globalmente o tipo de arquivo.condition (em rules): sintaxe avançada (all/any/not, path, content, query, contentType) mais condições built-in (browser, foreign, development, production, node, edge-light) para restringir onde um loader roda.module.exports = {
turbopack: {
rules: {
'*.svg': {
loaders: ['@svgr/webpack'],
as: '*.js',
},
},
},
}
@svgr/webpack) pra transformar .svg em componente React via Turbopack.import rawText from '../data.txt' with { turbopackLoader: 'raw-loader', turbopackAs: '*.js' }
turbopack.rules.module.exports = {
turbopack: {
rules: {
'*': {
condition: {
all: [
{ not: 'foreign' },
{ path: /^img\/[0-9]{3}\// },
{ any: [{ path: '*.svg' }, { query: /[?&]svgr(?=&|$)/ }, { content: /\<svg\W/ }] },
],
},
loaders: ['@svgr/webpack'],
as: '*.js',
},
},
},
}
node_modules, sob img/NNN/, que sejam SVG por path, query ou conteúdo.| Option | Description |
|---|---|
root | Sets the application root directory (absolute path). |
rules | Webpack loaders suportados a aplicar rodando com Turbopack. |
resolveAlias | Mapeia imports aliasados para módulos substitutos. |
resolveExtensions | Lista de extensões a resolver ao importar arquivos. |
debugIds | Gera debug IDs nos bundles JS e source maps. |
Module types (turbopack.rules.*.type): asset, ecmascript, typescript, css, css-module, json, wasm, node, raw/text, bytes.
Loaders testados: babel-loader (auto se houver config Babel), @svgr/webpack, svg-inline-loader, yaml-loader, string-replace-loader, raw-loader, sass-loader (auto), graphql-tag/loader.
Features de loader webpack SEM suporte: importModule, loadModule, emitFile, this.version, this.mode, this.target, this.utils, this.resolve (usar getResolve). this.fs só suporta fs.readFile.
| Version | Changes |
|---|---|
16.2.0 | turbopackLoader import attributes; rules.*.type; rules.*.condition.contentType/.query added. |
16.0.0 | turbopack.debugIds; turbopack.rules.*.condition added. |
15.3.0 | experimental.turbo renomeado para turbopack. |
13.0.0 | experimental.turbo introduzido. |
require() como valor de opção de loader: opções devem ser primitivos/objetos/arrays JavaScript puros, não é possível.turbo.loaders (nome antigo, pré-13.4.4): renomeado para turbopack.rules, com sintaxe de extensão mudada de .mdx para *.mdx.css-loader/postcss-loader/babel-loader para funcionalidade básica.npm link etc.), aponte turbopack.root para o diretório pai comum.type pode ser combinado com loaders: os loaders rodam primeiro, depois o resultado é processado conforme o type.turbopackLoader) são exclusivas do Turbopack; não funcionam no webpack e exigem with (não assert).rules podem ser array de objetos para modelar condições disjuntas (ex: comportamento diferente em browser vs servidor).rules/loaders.