ファイルシステムのシンボリックリンク? どのOS、ソフトリンクまたはハードリンク? 複製でリポジトリを作成できる変更はありますか?
Windowsオペレーティングシステム。 外部モジュールへの「npmlink」オプションを使用してシンボリックリンクを作成しました。 モジュールがインストールされている場合は問題ありません。 ただし、ローカルでテストするには、シンボリックリンクを作成する必要があります。これは、typescript2プラグインでのみ機能するわけではありません。 typescript1プラグインでは、シンボリックリンクは機能していますが、列挙型は機能していません。
同じ問題ですが、パッケージをリンクするためにlernaを使用し、ロールアップがリンクされたパッケージの予期しないトークンについて文句を言います。
lernaを使用したWindowsでもまったく同じ問題
フォルダを直接node_modulesにコピーすると、すべて問題ありませんが、シンボリックリンクを使用すると機能しません
@PavaniVaka @TerenceZ @thealjey複製付きの小さなリポジトリのチャンスはありますか?
@ezolenko申し訳ありませんが、いいえ。 しかし、私は問題を少し絞り込みました。 外部モジュールをアプリケーションディレクトリにコピーすると、機能することに気づきました。 しかし、それが単なるシンボリックリンクの場合、機能しません。 例:yalcを使用すると、外部の依存関係を簡単にテストできます。 これは、アプリケーションディレクトリにyalcフォルダーを作成し、外部モジュールをそのフォルダーにコピーしてから、yalcフォルダーからnode_modulesへのシンボリックリンクを作成するためです。 これがいくつかの手がかりを与えることを願っています。
@ezolenko私は実際に私の場合の問題が何であるかを理解しました、そしてそれはこのプラグイン(それは完全に機能します)またはそのことについてのシンボリックリンクとは何の関係もありません。
これは、typescript 自体の欠点というか、json ファイルに依存する構成です。
問題は、シンボリックリンクがCWD外のファイルに解決されていたことでした。
ビルドコマンドをトップレベルのpackage.jsonファイルに移動するだけで、すべてが機能し始めました。
私たちはここで同じページにいると思います。
@PavaniVaka @TerenceZ @thealjey複製付きの小さなリポジトリのチャンスはありますか?
@ezolenkohttps ://github.com/moki/mokuiあり
私は問題#194を解決しました。誰かが同じ問題に遭遇した場合に備えて、以下に解決策を提供します。
monorepo内で個別のパッケージをビルドしようとすると、ロールアップは@organization/package-name
を解決し、ビルドに含めようとします。 あなたはそれを望まないので、各パッケージを構築するときにそれを避けるために、私はpackage.json
解析し、 dependencies
フィールドのキーを抽出してから、 callback
内でそれらをチェックします内部ロールアップ構成のexternal
フィールドを提供できます。 これにより、望ましい結果が得られます。
import json from "rollup-plugin-json";
const pkg = process.env.LERNA_PACKAGE_NAME &&
require(`${process.env.LERNA_PACKAGE_NAME}/package.json`);
const dependencies = ({ dependencies }) => Object.keys(dependencies || {});
const pkgdependencies = dependencies(pkg);
/* exported rollup configuration */
const config = {
/* your config goes here... */
/* id is the source name if list of dependencies includes
* id source name, then mark it as external,
*/
external: id => pkgdependencies.includes(id)
};
export default config;
同じ問題でrollup-plugin-typescript
機能します
この問題は、srcの下のファイルがプロジェクト外のtypescriptファイルへのシンボリックリンクである場合にも発生します。
例:以下のようなファイル構造:
core/core-client/src/api.ts
myapp/myapp-client/src/api.ts
myapp/myapp-app/src/domain/api.ts -> ../../../myapp-client/src/domain/api.ts
myapp/myapp-app/src/domain/core -> ../../../../core/core-client/src/domain/
...
myapp / myapp-appでプロジェクトをコンパイルすると、
以下のエラーを伴うロールアップ苦情:
[ ERROR ] Rollup: Parse Error: ../myapp-client/src/domain/api.ts:28:7
Unexpected token (Note that you need plugins to import files that are not JavaScript)
L28: export interface IPrimus extends Primus {
interface
という単語が赤で強調表示されている
私の回避策は、npm スクリプトで pre/post フックを使用して、ファイルのリンクを解除してリンクすることです...
そのため、私のIDEは開発中に最新バージョンをチェックでき、ビルド時にコンパイルできます。
最も参考になるコメント
同じ問題ですが、パッケージをリンクするためにlernaを使用し、ロールアップがリンクされたパッケージの予期しないトークンについて文句を言います。