Rollup-plugin-typescript2: シンボリックリンクが機能していません

作成日 2019年10月30日  ·  12コメント  ·  ソース: ezolenko/rollup-plugin-typescript2

typescript2 symlink issue

依存関係へのシンボリックリンクが作成されると、ロールアップで「エラー:予期しないトークン(JavaScript以外のファイルをインポートするにはプラグインが必要であることに注意してください)」というエラーが表示されます。

環境

バージョン

  • typescript:^ 3.6.4
  • ロールアップ: "^ 1.26.0"
  • rollup-plugin-typescript2:^ 0.24.3

rollup.config.js

tsconfig.json

package.json

詳細3のプラグイン出力

bug

最も参考になるコメント

同じ問題ですが、パッケージをリンクするためにlernaを使用し、ロールアップがリンクされたパッケージの予期しないトークンについて文句を言います。

全てのコメント12件

ファイルシステムのシンボリックリンク? どの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ファイルに移動するだけで、すべてが機能し始めました。

私たちはここで同じページにいると思います。

194

@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は開発中に最新バージョンをチェックでき、ビルド時にコンパイルできます。

このページは役に立ちましたか?
0 / 5 - 0 評価