2017-11-25 13 views
1

モジュールを構築してnpmに公開しています。モジュールはReactに依存しています。私は現在yarnyarn linkを使用しています。devの "yarn/npm link"ワークフローが必要で、 "multiple copies of react"モジュールの公開用

私はこのモジュールを親プロジェクトにビルドしましたが、これをスタンドアロンモジュールに展開しようとしています。私は親プロジェクトの一部としてモジュールをローカルで開発し続けたいと思います。

モジュールでpackage.jsonは、次のようになります。

"devDependencies": { 
    "react": "^16.1.1", 
    "react-reconciler": "^0.6.0", 
    "react-dom": "^16.0.0", 
    "regl": "^1.3.0", 
} 

私はモジュールディレクトリにyarn linkを実行することにより、親の投影では、このモジュールが含まれ、その後、親ディレクトリでyarn link module-name。親プロジェクトに含めるとエラーがスローされます

要素refは文字列(キャンバス)として指定されていますが、オーナーは設定されていません。 Reactが複数読み込まれている場合があります。 (詳細: https://reactjs.org/warnings/refs-must-have-owner.html)。

私は、以前npm代わりのyarnを使用して、このワークフローを試してみましたが、同じ問題がありました。

私はこれが定型文で解決された問題であると考えています。私は他のプロジェクトを見てきましたが、共通の解決策を見ていませんでした。私は、「ベストプラクティスが答えるハイレベルを探してい。私は現在、私のプロジェクトで使用しているオプションは全くリンクnpm/yarnをスキップで構成さ

答えて

1

Webpackを使用すると、すべての依存関係にホストアプリケーションからのReactという単一のインスタンスを使用させるために、resolve.aliasをnpm/yarnリンクで長く使用できます。あなたの開発のWebPACKの設定で

は、次の行を追加します。

resolve: { 
    alias: { 
     react: path.resolve('./node_modules/react'), 
    }, 
}, 
1

webpackrollupか何かを使用して構成するオープンだし、スクリプト

  • がNPM DEPEをインストール結ぶ空のnode_modulesフォルダ
  • 実行ローカル依存関係を作成

    • :ようnode_modulesフォルダにに任意のローカルパッケージをNPMのスクリプトを追加ルートプロジェクトからndencies

    モジュールとホスティングプロジェクトは、あなただけの1つのReactインスタンスがをインストールとをシンボリックリンクあなたのローカルモジュールで終わる必要があります互換性のReact依存関係を宣言した場合。

    thisなどのツールを使用してローカル依存関係を自動化することもできます。

  • +0

    私が間違っているなら、私を修正してください。これは、親/ホストプロジェクトが 'package.json'にローカルファイルパスを持つことを要求しているようです。これは、ローカルモジュールを持たない環境に展開するときにどのように処理されますか? – kevzettler

    +0

    公開されると、上記のパッケージは通常のNPM依存として消費されます。Reactとの互換性のある依存関係を宣言している限り、NPMは同じReactインスタンスに依存させることができます。 –

    +0

    明確にするために、NPMに公開されるモジュールではなく、「The app」というホストプロジェクトについて話していました。 'The App'は伝統的に 'npm link module_name'を行うコードベースです。これは 'The App'を配備するときのように聞こえますが、package.jsonを編集してNPMパッケージ名のローカルパスに変更し、開発時にその逆を行う必要があります。 – kevzettler

    関連する問題