Windows 8とUbuntuを仮想マシンとして開発環境をセットアップしました。そのために私はVirtualBoxを使用します。
VirtualBoxに共有フォルダーを作成することもできます。
この共有フォルダーで、Yeomanのember-generatorを使用してプロジェクトを開始しようとしています。
yo ember --skip-install --karma
npm install --no-bin-links
モジュールNPMをインストールするには、オプション「--no-bin-links」を使用してシンボリックリンクを作成しません。残念ながら、シンボリックリンクの作成でエラーがまだ発生します...このオプションを使用しているのですか?そこに彼はバグがありますか?
NPM docs パラメータ "--no-bin-links"について:
npmがパッケージに含まれている可能性のあるバイナリのシンボリックリンクを作成しないようにします。
これにより、NPMはnode_modules/.bin
フォルダーにリンクを作成しなくなります。また、npm install ../myPackage
を使用するときにNPMがシンボリックリンクを作成しないようにする方法を探しましたが、解決策が見つかりません...
更新:npmサポートチームは、これにより古い動作が再現されると述べました(シンボリックリンクはありません)。
npm install $(npm pack <folder> | tail -1)
Windows 10のgit-bashで動作します。
このスタックオーバーフローページは、ローカルモジュール(つまりnpm install ../myPackage
)のインストールの問題を解決しようとして、シンボリックリンクが不要な場合、Googleの検索結果に表示されます。他の人を助けるために、この回答を以下に追加します最終的にここにいる人)
他の回答作品で述べたように、NPMサポートチームによって提案されたソリューションを使用しています...
# Reproduces the old behavior of hard copies and not symlinks
npm install $(npm pack <folder> | tail -1)
これは、手動インストールの開発環境では問題ありません。
ただし、今回のケースでは、Gitへの変更をコミットするときに./node_modules/
フォルダーが無視されるため、開発環境はそれほど重要ではありません。
ファイル./package.json
および./package-lock.json
は重要であり、ビルド環境に取り込まれます。
ビルド環境(自動CI/CDパイプラインの一部)では、オートメーションはnpm install
コマンドを実行し、package.json
ファイルにリストされている依存関係からビルドするだけです。
だから、ここで問題が私たちに影響を与えます。 package.json
の依存関係リストにあるローカル参照ファイルにより、シンボリックリンクが表示されます。これで古い問題に戻りました。これらのシンボリックリンクは、ステージ環境と本番環境に移動するビルドの出力に取り込まれます。
代わりに、シンボリックリンクを元のコピーに変換する--copy-links
オプションを使用して、アーカイブモードでrsync
を使用しています。
自動ビルドでのコマンドは次のようになります。
# Install dependencies based on ./package.json
npm install
# Make a copy that changes symlinks to hard copies
rsync --archive --verbose --copy-links ./node_modules/ ./node_modules_cp/
# Remove and replace
rm -r ./node_modules/
mv ./node_modules_cp/ ./node_modules/
私も似たような環境です。どうやら、virtualbox(vagrant)の同期では、ファイルの名前変更または移動時に問題が発生します。これは、モジュールの更新時に発生します。コマンドラインでファイルリスト(ls -alhp)を実行し、???ファイルの権限については、virtualboxを再起動します。これにより、権限が有効な値に設定されます。次に、モジュールをインストールするときに--no-bin-linksオプションを使用します。