質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
TypeScript

TypeScriptは、マイクロソフトによって開発された フリーでオープンソースのプログラミング言語です。 TypeScriptは、JavaScriptの構文の拡張であるので、既存の JavaScriptのコードにわずかな修正を加えれば動作します。

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

Q&A

解決済

1回答

1770閲覧

TypeScriptでコンパイル後のimport文を相対パスにしたい

退会済みユーザー

退会済みユーザー

総合スコア0

TypeScript

TypeScriptは、マイクロソフトによって開発された フリーでオープンソースのプログラミング言語です。 TypeScriptは、JavaScriptの構文の拡張であるので、既存の JavaScriptのコードにわずかな修正を加えれば動作します。

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

0グッド

1クリップ

投稿2018/07/23 09:22

TypeScript初めて1ヶ月位のものです。

したいこと

React + TypeScriptで開発をしているのですが、tsxで管理されているsrcディレクトリ内では、開発のしやすさのため、絶対パスでimport文を書いています。

これらをコンパイルするとsrcと並列関係にあるbuildディレクトリの中に、build/dist/srcとしてjsxにコンパイルされます。

このbuild/dist/src内のファイルを見てみると、ここでもimport文は絶対パスになっているのですが、この部分を相対パスにしたいと思っています。

理由は、storybookなど、外部モジュールを使うときにうまく読み込めないなどの問題が生じているからです。

tsconfig.json(の一部)

json

1 "compilerOptions": { 2 "outDir": "build/dist", 3 "target": "es5", 4 "lib": ["es6", "dom"], 5 "sourceMap": true, 6 "allowJs": true, 7 "jsx": "react", 8 "moduleResolution": "node", 9 "rootDir": "src", 10 "baseUrl": ".", 11... 12

自分で調べてみたこと

  • tsconfigのrootDir,baseUrlなどについて調べる(よくわからなかった)
  • [typescript compile relative path]などで検索をかける

tsのコンパイルオプションの理解が浅いことと、良いキーワードが思い当たらなかったなどでうまく答えにたどり着くことができませんでした。

個人的な予想としては、tsconfigのどこかの設定をいじることで、実現できるのかなと考えているのですが、答えを見つけられません。

どなたかご存知の方がいらっしゃればご教示願えませんでしょうか。
よろしくおねがいします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

絶対パス・・・というと下記のように paths オプションでエイリアス設定しているということでしょうか?

json

1"paths": { 2 "@/*": [ 3 "src/*" 4 ] 5}

この場合はオプションのみでは相対パスに変換できません。
@zerollup/ts-transform-pathscevek/ttypescript でコンパイルしたり、Babel でトランスパイルしたり何らかのツールを使う必要が出てきます。

[関連 issue]
tsconfig paths break when consuming the compiled declaration files from a different package · Issue #18972 · Microsoft/TypeScript

投稿2018/07/23 19:55

yhg

総合スコア2161

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2018/07/24 06:50

回答ありがとうございます。 質問文にもあるように、絶対パスの指定はtsconfigのrootDirとbaseUrlによって指定されています。 ですので、pathsという項目は今は使っていません。
yhg

2018/07/24 07:04

baseURL 基準で import foo from 'src/foo'; のように書いているならばオプションで対応は無理だと思います。 import foo from '/Users/you/project/src/foo'; とかも同様です。 paths オプションを使って import foo from '@/foo'; のようにして ttypescript + ts-transform-paths が手っ取り早いのではないんじゃないかなーと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問