【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
の中でpaths
にimport
したいファイルのあるパスを設定できる。
ディレクトリの構成が下記のようになってるとして
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特有の現象なのかこれはこれでエラーが発生してしまう。
諦めてたんだけども、シンボリックリンクではなくジャンクションを使うとWindowsでもエラー無しで実行&パブリッシュできた!
他のプロジェクトのcommon
ディレクトリをプロジェクト内のcommon
にジャンクションを作る例。
MKLINK /J "src/common" "../../other_project/src/common"
ジャンクションは、ディレクトリ限定のシンボリックリンクみたいな感じ?ディレクトリに対してのシンボリックリンクも作れるんだけども、なぜかシンボリックリンクではエラーが出てしまう。
まとめ(感想文)
メインアプリ用のツール的なアプリを別のプロジェクトで作る場合とかに使えるかもね!
編集後記(2024-9-7)
ジャンクション経由の特定のファイルでModule parse failed: Unexpected token
が発生してビルドできない。ビルドできるのもある。原因不明。調査中。