次の方法で共有


Node.js と npm の世界での警告と依存関係

ノード パッケージ マネージャー (npm) とオープンソース開発の世界を初めて使用する COM および VSTO アドイン開発者は、多くの場合、この種の開発の特定の側面に驚き、驚き、驚きます。 この記事は、そのような開発者が混乱を見つける可能性があることを安心させることを目的としています。

npm 依存関係ツリー

npm は、JavaScript ランタイム環境 Node.js の標準パッケージ マネージャーです。 これは、開発者が オープンソース ライブラリとツール (総称して "パッケージ" と呼ばれます) をインストールし、パッケージの依存関係を管理できるようにすることで、JavaScript 開発ワークフローを合理化するために使用されます。

npm 依存関係ツリーは、Node.js プロジェクトが依存するすべてのパッケージを表す階層構造です。 ツリー内の各ノードはパッケージであり、その子は依存するパッケージです。 この構造は、特に大規模なプロジェクトや、多くの推移的な依存関係を持つパッケージを使用する場合に、深く入れ子になることがあります。

npm installを実行すると、npm はpackage.jsonを読み取り、開発プロジェクト内のファイルをpackage-lock.jsonしてこのツリーをビルドし、必要なパッケージをフェッチします。

npm install警告について

npm installを実行すると、コンソールに多くの警告が表示されるのが一般的です。 これは最初は驚くべきことですが、Node.js とオープンソースエコシステムでの作業の通常の部分です。 Office アドイン用 Yeoman Generator など、npm installを呼び出す Microsoft ツールは、これらの同じ警告を報告します。

この記事では、 npm install が報告する可能性があるあらゆる種類の警告について説明しますが、特に Node.js の世界を初めて使用する開発者には混乱する可能性が高い 2 種類があります。

非推奨の警告

これらの警告は、依存関係ツリーのどこかにあるパッケージのマネージャーがパッケージを維持しなくなり、将来インターネットから削除される可能性があることを意味します。 お客様も Microsoft も、パッケージの非推奨の警告を制御することはできませんが、ほとんど常に無視できます。 非推奨は、パッケージが動作を停止したことを意味するものではありません。 それでも動作し、インストールによってコンピューターにコピーが配置されるため、パッケージがインターネットから削除された場合でも、今後もプロジェクトで動作し続けます。 パッケージは Web サービスではありません。

依存関係ツリーの 上部にある パッケージに対して非推奨の警告が表示される可能性は非常に低いですが、可能です。 これらは、プロジェクトの package.json ファイルの "依存関係" または "devDependencies" セクションに明示的に一覧表示されているパッケージです。 "devDependencies" に関する非推奨の警告は、前述の理由と同じ理由で無視できます。コードは開発用コンピューターにコピーされます。 [依存関係] セクションのパッケージは実行時にアドインで使用されますが、Office アドイン用 Yeoman Generator や Microsoft 365 Agent Toolkit などの Microsoft ツールで作成されたプロジェクトでは、これらの非推奨の警告も無視できます。これらのツールには、アドインの Web サーバーが提供する JavaScript コードのバンドルにライブラリのコピーが含まれているためです。

注:

「依存関係」セクションのライブラリの非推奨が懸念事項の 1 つである状況の 1 つは、次のとおりです。

  • ライブラリは "依存関係" セクションにのみ含まれているため、ローカルでのテストとデバッグ中にライブラリを使用できます。
  • ステージングまたは運用環境用にアドインをデプロイする場合、サーバーがホストするコードにライブラリのコピーを含めないように計画します。
  • 代わりに、unpkg.com や cdn.jsdelivr.net などの npm ライブラリをホストする Web サービスからアドインにライブラリを読み込む予定です。

これがデプロイ戦略を説明している場合、非推奨のライブラリが Web サービスから削除されると、デプロイされたアドインの動作が停止する危険性があります。 そのため、非推奨の警告は、非推奨のライブラリを使用しないようにアドインを再設計する必要があることを示すものとして扱ってください。

セキュリティまたは監査の警告

監査警告とも呼ばれるセキュリティ警告は、ハッカーが利用できる既知のセキュリティ脆弱性を持つパッケージのバージョンが依存関係ツリーにあることを意味します。 Microsoft では、ツールによって作成されたプロジェクトでこれらの警告を定期的にチェックし、修正します。通常は、ライブラリを脆弱性のない新しいバージョンに更新します。 しかし、新しい脆弱性が検出され、監視を npm install セキュリティ アラート データベースにほぼ毎日報告され、Microsoft は常にそれらをすぐに修正することはできません。 このため、アドイン プロジェクトで npm install を実行すると、セキュリティの脆弱性が報告されることがよくあります。

依存関係をpackage.jsonの "devDependencies" セクションの最上位パッケージにトレースできる場合は、無視できます。 コードはコンピューター上でのみ実行されており、自分をハッキングするつもりはありません。

依存関係が [依存関係] セクションの最上位パッケージにトレースされる場合、または最上位のパッケージを特定できない場合は、アドインを運用環境にデプロイする前に、脆弱性の修正を試みる必要があります。 npm パッケージの脆弱性に対処する方法については、インターネット上に多くの良い情報があります。 ここでは、1 つの手法をメンションします。 一部の脆弱性は npm によって自動的に修正される可能性があります。 package.json ファイルがあるフォルダーに npm audit fix コマンドを実行するだけです。 脆弱性を持たないパッケージの新しいバージョンがあり、新しいバージョンに脆弱なバージョンに対する破壊的変更がない場合、npm はパッケージを安全なバージョンに自動的に更新します。

もう 1 つの戦略は、元のプロジェクトを作成したのと同じ Microsoft ツールを使用して新しいアドイン プロジェクトを作成するために、数週間ごとに数分かかる方法です。 (プロジェクトの種類、言語、Office アプリケーションなどに同じオプションを選択します) npm install が新しいプロジェクトのセキュリティの脆弱性を報告しなくなった場合、Microsoft はプロジェクト テンプレートで修正しました。 次の手順を使用して、修正プログラムをプロジェクトに移動できます。

  1. の "依存関係" セクションを新しいプロジェクトから、元のプロジェクトの package.json の同じセクションにコピーします。
  2. 元のプロジェクトから node_modules フォルダーを削除します。
  3. 元のプロジェクトで npm install を実行します。

エラー

npm エラーは、警告とは異なり、 npm installを含む npm コマンドの処理を直ちに停止します。 問題を診断して修正する必要があります。 npm がパッケージをフェッチしようとすると、エラーが一時的なネットワークの問題の副作用になることがあります。 npm install再実行してみてください。

注:

npm installの実行は、Yeoman Generator for Office アドインがプロジェクトを作成するときに実行する最後の処理です。 エラーが報告された場合は、プロジェクトが完全に作成されているため、ジェネレーターを再実行する必要はありません。 コマンド ラインで npm install を再実行するだけです。