【Create React App】他のプロジェクトのファイルをimportする

ネコニウム研究所

PCを利用したモノづくりに関連する情報や超個人的なナレッジを掲載するブログ

【Create React App】他のプロジェクトのファイルをimportする

TypeScriptやJavaScriptなCreate React Appを使った環境で他のプロジェクトのファイルをimportしたい!

概要

今回の記事では、TypeScriptやJavaScriptなCreate React Appを使った開発環境で他のプロジェクトのファイルをimportする手順を掲載する。

npmとかでライブラリを作るまでもないプライベートな開発環境で別のプロジェクトのコンポーネントを単純にimportしたい!

仕様書

環境

  • typescript 5.2.2

手順書

Create React Appを使わない場合と使ってない場合の2部構成。

Create React Appを使わない場合

Create React Appを使わない場合はプロジェクトのルートにあるtsconfig.json(JavaScriptの場合はjsconfig.json)のcompilerOptionsの中でpathsimportしたいファイルのあるパスを設定できる。

ディレクトリの構成が下記のようになってるとして

current_project
    src
    tsconfig.json
other_project
    src
        common.tsx

current_projectからother_projectのファイルをimportできるようにする例。

{
    "compilerOptions": {
        ...
        "baseUrl": "./src",
        "paths": {
            "@other/*": ["../../other_project/src/*"]
        }
    },
    ...
}

pathsのパスはbaseUrlのパスが起点になる。また、baseUrlの設定がないとpathsの設定は無視される。

importは下記のような感じでできる。

import {*} from '@other/common';

Create React Appを使う場合

んで、本題。

Create React Appを使う場合は、前述の方法ではエラーがでてしまう。
インターネットで調べるとシンボリックリンクを使うと良いという感じだったんだけども、Windows特有の現象なのかこれはこれでエラーが発生してしまう。

諦めてたんだけども、シンボリックリンクではなくジャンクションを使うとエラー無しで実行&パブリッシュできた!

他のプロジェクトのcommonディレクトリをプロジェクト内のcommonにジャンクションを作る例。

MKLINK /J "src/common" "../../other_project/src/common"

ジャンクションは、ディレクトリ限定のシンボリックリンクみたいな感じ?ディレクトリに対してのシンボリックリンクも作れるんだけども、なぜかシンボリックリンクではエラーが出てしまう。

まとめ(感想文)

メインアプリ用のツール的なアプリを別のプロジェクトで作る場合とかに使えるかもね!