[解決済み] spec/testフォルダを使用したtsconfigのセットアップ
2023-01-18 06:36:12
質問
私のコードを
src
の下に、テストは
spec
:
+ spec
+ --- classA.spec.ts
+ src
+ --- classA.ts
+ --- classB.ts
+ --- index.ts
+ tsconfig.json
トランスパイルしたいのは
src
を
dist
フォルダーにコピーします。このため
index.ts
は私のパッケージのエントリポイントなので、私の
tsconfig.json
はこのようになります。
{
"compileOptions": {
"module": "commonjs"
"outDir": "dist"
},
"files": {
"src/index.ts",
"typings/main.d.ts"
}
}
しかし、この
tsconfig.json
にはテストファイルが含まれていないので、その中の依存関係を解決することができませんでした。
一方、テストファイルを
tsconfig.json
に含めると、それらはまた
dist
フォルダに格納されます。
この問題を解決するにはどうすればよいですか?
どのように解決するのですか?
結局、複数の設定ファイルを定義して
extends
を使って簡略化しています。
2つのファイルがあるとします。
tsconfig.json
と
tsconfig.build.json
// tsconfig.json
{
...
"exclude": [...]
}
// tsconfig.build.json
{
...
"files": [ "typings/index.d.ts", "src/index.ts" ]
}
この方法では、何をビルドするかを細かく制御することができます (
tsc -p tsconfig.build.json
を使って)、そして
ts language service
(IDE)が処理するものです。
UPDATE: 現在、私のプロジェクトが大きくなるにつれて、私はより多くの設定ファイルを持つことになりました。TypeScriptで利用できるようになった"extend"の機能を利用しています。
// tsconfig.base.json
{
// your common settings. Mostly "compilerOptions".
// Do not include "files" and "include" here,
// let individual config handles that.
// You can use "exclude" here, but with "include",
// It's pretty much not necessary.
}
// tsconfig.json
{
// This is used by `ts language service` and testing.
// Includes source and test files.
"extends": "./tsconfig.base.json",
"atom": { ... },
"compilerOptions": {
// I set outDir to place all test build in one place,
// and avoid accidentally running `tsc` littering test build to my `src` folder.
"outDir": "out/spec"
}
"include": [ ... ]
}
// tsconfig.commonjs.json or tsconfig.systemjs.json or tsconfig.global.json etc
{
"extends": "./tsconfig.base.json",
"compilerOptions": {
// for some build this does not apply
"declaration": true/false,
"outDir": "dist/<cjs, sys, global, etc>",
"sourceRoot": "..."
},
// Only point to typings and the start of your source, e.g. `src/index.ts`
"files": [ ... ],
"include": [ ... ]
}
関連
-
[解決済み] TypeScriptで Object.keys return string[].
-
[解決済み] TypeScriptの予約語 "type "とは何ですか?
-
[解決済み] describe'という名前が見つかりません。テストランナー用の型定義をインストールする必要がありますか?
-
[解決済み] ts ES5/ES3の非同期関数やメソッドには、「Promise」コンストラクタが必要です。
-
[解決済み] ユニオン型からインターセクション型への変換
-
[解決済み] タイプスクリプト。カスタムタイプに対する typeof のチェック
-
[解決済み] モジュールと名前空間 - Import vs Require Typescript
-
[解決済み] TypeScript "this" scoping issue when called in jquery callback.
-
[解決済み] 他のプロパティを使用できる TypeScript インターフェース
-
[解決済み] Angular 2 カスタムフォーム入力
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] TypeScriptの予約語 "type "とは何ですか?
-
[解決済み] describe'という名前が見つかりません。テストランナー用の型定義をインストールする必要がありますか?
-
[解決済み] ts ES5/ES3の非同期関数やメソッドには、「Promise」コンストラクタが必要です。
-
[解決済み] Typescriptでインターフェースやクラスを使用する場合 [重複].
-
[解決済み] タイプスクリプト。カスタムタイプに対する typeof のチェック
-
[解決済み] Promiseの型はどのようにアンラップするのですか?
-
[解決済み] エラー Typescript Feature 1.5。現在の言語レベルは1.4です。
-
[解決済み] TypeScriptで強く型付けされた配列の作成
-
[解決済み] 2つのインターフェイスを統合する
-
[解決済み] TSにおける文字列列列挙型と文字列リテラル型の相違点