LoginSignup
39
35

More than 5 years have passed since last update.

TypeScriptでaliasなパスでmoduleをimportできるように

Last updated at Posted at 2017-08-01

前回、WebpackとFlowのaliasなパスで読み込むのを書いた(webpack.resolve.aliasを設定しているプロジェクトでの.flowconfig設定)けど、そのTypeScript版。

設定

例えば、設定前は、../../components/buttonとしていたのをcomponents/buttonとしたい時、tsconfig.jsonbaseUrlrootDirsをこんな感じで設定します。

tsconfig.json
{
  "compilerOptions": {
    "baseUrl": "./",
    "paths": {
      "components/*": ["src/scripts/components/*"],
      "components": ["src/scripts/components"],
    }
  }
}

/*と書くことでマッチしたパスをそのまま後ろに付けて読み込んでくれるようになります。つまり、components/button./src/components/buttonとなってファイルを読み込みます。
また上記のcomponentsの方ですが、これがあると./src/components/index.tsなファイルをcomponentsでインポートできるようになります。

ちなみに面倒くさかったらこれで両方いけます。

"components*": ["src/scripts/components*"]

Webpack+awesome-typescript-loaderと一緒に

Readmeを見ると、{TsConfigPathsPlugin}を使えば解決してくれそうですが、解決してくれませんでした。

ビルド時間増えたみたいなイシューもあったので、ひとまずWebpack.resolve.aliasに同じようなエイリアスを設定して回避することにしました。

webpack.config.js
{
  // ...
  resolve: {
    alias: {
      components: path.resolve(__dirname, '../src/components')
    }
  }
  // ...
}

😇

39
35
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
39
35