typescript を使用したノード プロジェクトがあり、tsconfig.json ファイルに次のパスが構成されています。
"paths": { /* A series of entries which re-map imports to lookup locations relative to the 'baseUrl'. */
"@project/*": ["./../*"],
"@*": ["./*"],
},
構成ファイルは /project フォルダーにあり、ソースは /project/src にあります
問題なく動作し、@xxx/yyy を src/xxx/yyy に、@project/package.json を /project/package.json に正しくマッピングします。
私はts-jestで同じことを達成しようとしています.jest.config.jsファイルで次のmoduleNameMapperを試しました:
module.exports = {
preset: 'ts-jest',
testEnvironment: 'node',
roots: ['<rootDir>/src/'],
modulePathIgnorePatterns: ['<rootDir>/dist/', '<rootDir>/build/'],
testMatch: ['**/*.spec.ts'],
moduleNameMapper: {
"^\@(.*)": "<rootDir>/src/$1",
}
}
しかし、次のエラーが表示されます。
FAIL src/lib/error/BaseError.spec.ts
● Test suite failed to run
Configuration error:
Could not locate module @babel/code-frame mapped as:
C:\data\devel\apps\sgte-it\coordinacion\juridicos\wspjn\src\babel/code-frame.
Please check your configuration for these entries:
{
"moduleNameMapper": {
"/^@(.*)/": "C:\data\devel\apps\sgte-it\coordinacion\juridicos\wspjn\src\$1"
},
"resolver": null
}
at createNoMappedModuleFoundError (node_modules/jest-resolve/build/index.js:501:17)
一方、 /src のすべてのフォルダーを次のようにマップすると:
module.exports = {
preset: 'ts-jest',
testEnvironment: 'node',
roots: ['<rootDir>/src/'],
modulePathIgnorePatterns: ['<rootDir>/dist/', '<rootDir>/build/'],
testMatch: ['**/*.spec.ts'],
moduleNameMapper: {
"@db/(.*)": "<rootDir>/src/db/$1",
"@lib/(.*)": "<rootDir>/src/lib/$1",
"@modules/(.*)": "<rootDir>/src/modules/$1",
"@services/(.*)": "<rootDir>/src/services/$1"
}
}
問題なく動作しますが、新しいルート フォルダーを追加するたびに更新する必要があります。
そのようなことを達成するための標準的で推奨される方法はありますか? /src/ フォルダーを指す特殊文字 (この場合は @) が必要です。
「@」を「$」に置き換えてみましたが、他のエラーもありました...