Works by

Ren's blog

@rennnosuke_rk 技術ブログです

【Nuxt.js/TypeScript】Nuxt.js/TypeScriptでimport エイリアスを有効化する 

f:id:rennnosukesann:20190923222649p:plain:w250f:id:rennnosukesann:20190923222722p:plain:w350

Nuxt.jsでTypeScriptを使用した際、Webpackでよくやるimportエイリアスを適用したかったのでやってみました。

TypeScriptコンパイル時のエイリアスルールを設定

先ずはコンパイル時に怒られないよう tsconfig.tsエイリアスを設定します。

tsconfig.ts
{
  "compilerOptions": {
    ....
    "baseUrl": ".",
    "paths": {
      "@/*": ["./*"],
      "~/*": ["./*"]
    },
    ....
  }
}

baseUrl はimportの起点となるディレクトリです。
この場合 tsconfig.ts が配置されたところがルートディレクトリとなります。

paths に設定したいエイリアスを記述していきます。

nuxt.config.ts

TypeScript側では静的チェックを行うのみで、実際のコンパイル時にimportを解決してくれません。

なのでimport解決そのものはWebPackの設定で行います。

Nuxt.jsにおけるWebpackの設定は webpack.config.js(ts) ではなく nuxt.config.js(ts) で行います。

const path = require("path");
export default {
  ....
  resolve: {
    ....
    alias: {
      "@": path.resolve(__dirname),
      "~": path.resolve(__dirname)
    }
    ....
  },
  ....
};

上記のような alias プロパティにパスを設定していきます。

これでOK。TypeScriptコンパイルが通り、importを実行できます。