CC 4.0 ライセンス

このセクションの内容は、以下のリンクの内容から派生したものであり、CC BY 4.0ライセンスに従います。

特に明記されていない限り、以下の内容は、元の内容に基づいて変更および削除された結果と見なすことができます。

解決

Rspackのモジュール解決ロジックを設定するために使用されます。

  • 型: Object

resolve.alias

  • 型: Record<string, false | string | (string | false)[]>
  • デフォルト: {}

パスエイリアス、例えば

{ "@": path.resolve(__dirname, './src'), "abc$": path.resolve(__dirname, './node_modules/abc/index.js'), }

この時点で

  • require("@/a")<root>/src/a を解決しようとします。
  • require("abc")<root>/src/abc を解決しようとします。
  • require("abc/file.js") は一致せず、node_modules/abc/file.js を解決しようとします。

resolve.aliasFields

  • 型: string[]
  • デフォルト: ['browser']

この仕様に従って解析されるべきフィールド(例:browser)を定義します。

resolve.conditionNames

  • 型: string[]
  • デフォルト: []

package.jsonの exports および imports フィールドに対する node の conditionNames と同じです。

resolve.descriptionFiles

  • 型: string[]
  • デフォルト: ['package.json']

説明に使用するJSONファイル。

rspack.config.js
module.exports = {
  resolve: {
    descriptionFiles: ['package.json'],
  },
};

resolve.enforceExtension

  • 型: boolean

resolve.extensionsに空の文字列が含まれている場合はデフォルトで true に変わり、それ以外の場合はこの値は false に変わります。

trueの場合、拡張子のないファイルは許可されません。したがって、デフォルトでは ./foo.js 拡張子がある場合、require('./foo') は機能しますが、これを有効にすると require('./foo.js') のみ機能します。

rspack.config.js
module.exports = {
  resolve: {
    enforceExtension: false,
  },
};

resolve.extensions

  • 型: string[]
  • デフォルト: [".js", ".json", ".wasm"]

モジュールを順番に解析します。例えば require('. /index')'. /index.js', '. /index.json' ...を解析しようとします。

resolve.extensionAlias

  • 型: Record<string, string[] | string>
  • デフォルト: {}

拡張子のエイリアスを定義します。例えば

rspack.config.js
module.exports = {
  resolve: {
    extensionAlias: {
      '.js': ['.ts', '.js'],
    },
  },
};

これは、TypeScriptファイルを参照するために .js 拡張子を使用することを推奨しているため、TypeScriptプロジェクトで特に役立ちます。

index.ts
import { foo } from './foo.js'; // actually refers to `foo.ts`

Rspackは import './foo.js' を解決する際に './foo.ts'./foo.js' を順番に解決しようとします。

resolve.fallback

  • 型: Record<string, false | string>
  • デフォルト: {}

通常の解決に失敗した場合にモジュールリクエストをリダイレクトします。

rspack.config.js
module.exports = {
  //...
  resolve: {
    fallback: {
      abc: false, // do not include a polyfill for abc
      xyz: path.resolve(__dirname, 'path/to/file.js'), // include a polyfill for xyz
    },
  },
};

RspackはNode.jsコアモジュールを自動的にポリフィルしません。つまり、ブラウザなどで実行されるコードでそれらを使用する場合は、NPMから互換性のあるモジュールをインストールして自分で含める必要があります。

node-polyfill-webpack-pluginを使用して、Node.jsコアAPIを自動的にポリフィルできます。

rspack.config.js
const NodePolyfillPlugin = require('node-polyfill-webpack-plugin');

module.exports = {
  // ...
  plugins: [new NodePolyfillPlugin()],
};

または、webpack 4で使用されるNode.jsポリフィルのリストを参照してください

rspack.config.js
module.exports = {
  //...
  resolve: {
    fallback: {
      assert: require.resolve('assert'),
      buffer: require.resolve('buffer'),
      console: require.resolve('console-browserify'),
      constants: require.resolve('constants-browserify'),
      crypto: require.resolve('crypto-browserify'),
      domain: require.resolve('domain-browser'),
      events: require.resolve('events'),
      http: require.resolve('stream-http'),
      https: require.resolve('https-browserify'),
      os: require.resolve('os-browserify/browser'),
      path: require.resolve('path-browserify'),
      punycode: require.resolve('punycode'),
      process: require.resolve('process/browser'),
      querystring: require.resolve('querystring-es3'),
      stream: require.resolve('stream-browserify'),
      string_decoder: require.resolve('string_decoder'),
      sys: require.resolve('util'),
      timers: require.resolve('timers-browserify'),
      tty: require.resolve('tty-browserify'),
      url: require.resolve('url'),
      util: require.resolve('util'),
      vm: require.resolve('vm-browserify'),
      zlib: require.resolve('browserify-zlib'),
    },
  },
};

resolve.importsFields

  • 型: string[]
  • デフォルト: ["imports"]

package.jsonの imports フィールドをカスタマイズします。これは、パッケージの内部リクエスト(# で始まるリクエストは内部と見なされます)を提供するために使用されます。

例えば

// package.json { "name": "lib", "imports": { "#foo": "./src/foo.js", "#common/*": "./src/common/*.js" } "testImports": { "#foo": "./src/test/foo.js", } }

この構成が ["testImports", "imports"] の場合、現在のパッケージでの import value from '#foo' の結果は src/test/foo.js です。

resolve.mainFields

  • 型: string[]
  • デフォルト
    • target が web の場合は ["browser", "module", "main"]
    • その他の場合は ["module", "main"]

package.jsonのフィールドを解析しようとします。例:

// package.json
{
  "name": "lib",
  "module": "es/index.js"
}

このとき、import value from 'lib'lib/es/index.js に解決されます。

resolve.mainFiles

  • 型: string[]
  • デフォルト: ["index"]

ディレクトリを解決する際のファイル名サフィックスです。例えば、require('. /dir/')'. /dir/index' の解決を試みます。

resolve.exportsFields

  • 型: string[]
  • デフォルト: ["exports"]

package.jsonのexportsフィールドをカスタマイズします。例:

// lib/package.json
{
  "name": "lib",
  "testExports": {
    ".": "./test.js"
  },
  "exports": {
    ".": "./index.js"
  }
}

この設定が ["testExports", "exports"] の場合、import value from 'lib' の結果は lib/test.js となります。

resolve.modules

  • 型: string[]
  • デフォルト: ["node_modules"]

依存関係を解決する際に使用するディレクトリの名前。

resolve.preferRelative

  • 型: boolean
  • デフォルト: false

有効にすると、require('file') は最初に <modules>/file ではなく、現在のディレクトリの . /file ファイルを検索します。

resolve.preferAbsolute

  • 型: boolean
  • デフォルト: false

resolve.roots を基準として、解決時に絶対パスを優先します。

resolve.tsConfig

  • 型: string | object | undefined
  • デフォルト: undefined

Rspackにおけるtsconfig-paths-webpack-pluginの代替。

rspack.config.js
module.exports = {
  resolve: {
    // string
    tsConfig: path.resolve(__dirname, './tsconfig.json'),
    // or object
    tsConfig: {
      configFile: path.resolve(__dirname, './tsconfig.json'),
      references: 'auto',
    },
  },
};

例を見るにはクリックしてください.

resolve.tsConfig.configFile

  • 型: string

このオプションを通じてtsconfig.jsonのパスを渡すと、Rspackはtsconfig.jsonpathsbaseUrlに基づいてモジュールを解決しようとします。これはtsconfig-paths-webpack-pluginと同等の機能です。

resolve.tsConfig.references

  • 型: string[] | "auto" | undefined
  • デフォルト: undefined

tsconfig プロジェクト参照をサポートします。tsconfig-paths-webpack-pluginで定義されています。

tsconfigパスのリストは手動で指定するか、autoを指定してtsconfig.referencesからパスリストを自動的に読み取ることができます。

この機能は、値がundefinedの場合、無効になります。

resolve.fullySpecified

  • 型: boolean
  • デフォルト: false

拡張子を解決せず、package.jsonのmainFilesも解決しません(ただし、mainFiles、browser、aliasからのリクエストには影響しません)。

resolve.restrictions

  • 型: string[]
  • デフォルト: []

リクエストが解決できるパスを制限するための解決制限のリスト。

resolve.roots

  • 型: string[]
  • デフォルト: []

サーバー相対URL('/'で始まる)が解決されるディレクトリのリスト。デフォルトではcontext設定オプションになります。Windows以外のシステムでは、これらのリクエストは最初に絶対パスとして解決されます。

  • 型: boolean
  • デフォルト: true

シンボリックリンクを、シンボリックリンクされた場所に解決するかどうか。

有効にすると、シンボリックリンクされたリソースは、シンボリックリンクされた場所ではなく、実際のパスに解決されます。 これは、パッケージをシンボリックリンクするツール(npm linkなど)を使用している場合、モジュール解決が失敗する可能性があることに注意してください。

resolve.byDependency

  • 型: Record<string, Resolve>

モジュールタイプに基づいてResolve設定をカスタマイズします。