Obake Engineer Blog

「create-react-app」+ 「TypeScript」環境で絶対パスのaliasを指定する

TypeScriptReactWebpackJavaScript

2020/10/22

import文を相対パスで記載せず、絶対パスで記載するやり方。

手順

①パッケージをインストールする

webpackの設定を変更するためのパッケージ、react-app-rewiredをインストールする。
https://github.com/timarney/react-app-rewired

zsh
❯  yarn add react-app-rewired -D

②package.jsonを編集する

先程インストールしたパッケージに合わせて、package.json内のデフォルトのscript部分を書き換える。

package.json
"start": "react-app-rewired start",
"build": "react-app-rewired build",
"test": "react-app-rewired test",
"eject": "react-app-rewired eject",

③webpackの設定ファイルを作成する

ルート階層にconfig-overrides.jsを作成し、alias設定の記述を書き込む。

config-overrides.js
const path = require('path')

module.exports = (config) => {
  config.resolve = {
    ...config.resolve,
    alias: {
      ...config.alias,

      // 以下に指定したいalias名と、対応パスを記述
      '@js': path.resolve(__dirname, './src/js'),
      '@data': path.resolve(__dirname, './src/data'),
      '@styles': path.resolve(__dirname, './src/styles'),
    }
  };

  return config;
}

④tsconfig.jsonを編集する

create-react-app環境だとtsconfig.jsonでpathsを指定できないため、(react-scripts startした時にpathsオプションが自動で消されてしまう) compilerOptionsの記述の前に、extendsの記述を追加し、別ファイルで設定を行う。

tsconfig.json
{
  "extends": "./tsconfig.paths.json",
    "compilerOptions": {
  // 省略
}

⑤tsconfig.paths.jsonを作成する

config-overrides.jsの設定に対応するpathsを記述する。

tsconfig.paths.json
{
  "compilerOptions": {
    "baseUrl": ".",
    "paths": {
      "@js/*": ["./src/js/*"],
      "@data/*": ["./src/data/*"],
      "@styles/*": ["./src/styles/*"],
    }
  }
}

これでsrc配下のファイルでimport文を書くとき、絶対パスaliasを使用することができる。

js
// こんな長いパス指定も
import hoge from "../../../js/component/hoge";

// aliasでスッキリ
import hoge from "@js/component/hoge";

参考

  • Absolute paths with Create React App + Typescript (without ejecting) | by Gustavo Graeff | Aug, 2020 | Medium
  • VS Code + create-react-app v3でtsconfig.jsonのpathsを使用する - Qiita
  • react-create-app + TypeScriptでwebpackのaliasを設定する方法 | MK Dev

/post-8

「create-react-app」+ 「TypeScript」環境で絶対パスのaliasを指定する

Related Posts

  • TypeScript環境でEmotionのスタイル指定に任意のpropsを渡す方法
  • 【JavaScript】typeofの違い【TypeScript】
  • Reactのレンダリングメモ
  • Reactのレンダリングプロセス

Search

Recent Posts

  • Apollo Clientでリクエストヘッダーに認証トークンを付与する方法
  • 【Zsh】コマンド履歴にエラーの履歴を残さない設定
  • 【Laravel】PHPUnit実行時に開発用DBを初期化してしまわないために
  • TypeScript環境でEmotionのスタイル指定に任意のpropsを渡す方法
  • Reactのレンダリングメモ

All Tags

JavaScript (7)
React (4)
GatsbyJS (3)
TypeScript (3)
Zsh (2)
Webpack (2)
Git (1)
CSS (1)
Dotenv (1)
Redux (1)
Emotion (1)
Laravel (1)
PHP (1)
GraphQL (1)
Apollo (1)
obake
Obake Engineer Blog

の検索結果: 0件中 0件表示