🦁
ESModules化したNestJSで絶対パスimportを使う
これはなに
上記の記事でNestJSをESModules化する方法についてまとめましたが、このままだとimport時に相対パスでimportしなければならず、絶対パスでのimportができません。
import { AppModule } from '../../../../../app.module.js'; // 「../」をたくさんつけないといけない
これを絶対パスでimportできるようにする方法をまとめます。
ESModules化したNestJSで絶対パスimportを使う
解決先はswc
を使うことです。
まずはswc
をinstallする。
npm i @swc/cli @swc/core
nest-cli.json
でコンパイラにswc
を使うように指定する。
nest-cli.json
"compilerOptions": {
+ "builder": "swc",
"deleteOutDir": true
}
.swcrc
を作成する。
(コンパイル後の形式をnodenext
にする。es6
でも動く)
{
"module": {
"type": "nodenext"
}
}
絶対パスでimportできるようにtsconfig.json
を修正。
tsconfig.json
"compilerOptions": {
+ "paths": {
+ "~/*": ["src/*"]
+ },
これでsrc/
配下を~/
でimportできるようになります。
app.module.ts
- import { AppService } from './app.service.js';
+ import { AppService } from '~/app.service.js';
以上です。
Discussion