外部依存関係
項目一覧
外部依存関係は、自分で実装できない、または実装したくないコードを含むライブラリです。 たとえば、外部サービスには公式のライブラリを使用したり、データ構造やアルゴリズムのカスタム実装を使用したりできます。
Atlas App Services は依存関係を自動的にトランスファイルし、ほとんどの組み込み Node.js モジュールもサポートします。
注意
独自のモジュールを作成
ほとんどの npm モジュールはサードパーティによって記述されていますが、アプリケーション固有のロジックを格納するために、独自の npm モジュールを作成して公開することもできます。 モジュールを Node.js Community で使用できるようにしたり、プライベート使用のために予約したりすることもできます。 詳細については、 のレジストリへのパッケージの貢献 に関する npm のガイドをご覧ください。 。
外部パッケージを追加する
外部依存関係をインポートして使用するには、まずアプリケーションに依存関係を追加する必要があります。 名前を使用してパッケージを追加するか、依存関係のディレクトリをアップロードできます。
重要
既存の依存関係の上書き
アプリが使用できる外部パッケージを指定するには、一度に 1 つの方法のみを使用できます。 依存関係を指定するために使用した最新の方法は真実のソースであり、以前の指定を上書きします。
たとえば、UI を介して名前を追加したパッケージは、アップロードされた依存関係ディレクトリにあるパッケージを含め、以前に追加した同じパッケージのコピーを上書きします。
名前とバージョンでパッケージを追加
npm レジストリ からパッケージを追加できます アプリの名前を使用して特定のバージョンを追加するか、最新バージョンを使用できます。
依存関係情報を追加する
前のステップのアクションからポップアップするAdd Dependencyモーダル ウィンドウに、次の情報を含めます。
フィールド | 説明 |
---|---|
パッケージ名を定義する | npm パッケージの名前。 |
パッケージ バージョン | 任意。 使用する依存関係の特定のバージョン。 デフォルトでは、App Services は利用可能な最新バージョンを使用します。 |
パッケージの追加を開始するには、 Addボタンをクリックします。
依存関係を追加する状況は、ウィンドウの下部にある進行状況追跡で追跡できます。 進行状況追跡は、パッケージが成功したか失敗したかを示すメッセージを提供します。 失敗メッセージには、パッケージを追加できなかった理由に関する追加情報が含まれています。
配置案が有効になっている場合は、これらの変更を適用するためにReview & Deployをクリックする必要もあります。
依存関係ディレクトリのアップロード
圧縮されたnode_modules
ディレクトリのパッケージをアプリにアップロードできます。 圧縮された依存関係ディレクトリは 15 MB を超えることはできません。
外部依存関係をローカルにインストール
外部依存関係をアップロードするには、まず少なくとも 1 つの Node.js パッケージを含むローカルnode_modules
フォルダーが必要です。 次のコード スニペットを使用して、アップロードする依存関係をローカルにインストールできます。
npm install <package name>
node_modules
フォルダがまだ存在しない場合、このコマンドはそれを自動的に作成します。
注意
インストールの代替方法
また、 package.json
を構成し、 npm install
コマンドを実行して、 package.json
にリストされているすべてのパッケージ(およびその依存関係)をインストールすることもできます。
npm とnode_modules
の詳細については、 npm ドキュメント を参照してください 。
依存関係アーカイブのアップロード
依存関係を含むアーカイブを作成したら、App Services UI または App Services CLI を使用して依存関係アーカイブをアップロードできます。
左側のナビゲーション メニューからFunctionsを選択します。
Dependencies タブを選択します。
Uploadボタンをクリックします。
ファイル ピッカーで、作成した
node_modules.tar.gz
アーカイブを選択し、[ 開く ] をクリックします。 App Services はアーカイブ ファイルを自動的にアップロードします。このアップロードに数分かかる場合があります。これには、インターネット接続の速度と依存関係アーカイブのサイズによっては、数分かかる場合があります。操作が成功したか失敗したかにかかわらず、App Services には操作の成功または失敗を示すバナーが表示されます。 成功した場合、 Dependenciesタブには依存関係アーカイブに含めた依存関係のリストが表示されます。 配置案が有効になっている場合は、これらの変更を適用するためにReview & Deployをクリックする必要もあります。 配置案が無効になっている場合、依存関係アーカイブのサイズに応じて 5 ~ 60 秒以内に変更が有効になります。
node_modules
アーカイブを/functions
ディレクトリに追加します。mv node_modules.tar.gz ./myapp/functions --include-node-modules
オプションを使用してアプリケーションをプッシュします。appservices push --include-node-modules
関数内のパッケージをインポートする
アプリに追加した組み込みモジュールと外部パッケージをインポートし、関数で使用できます。 パッケージをインポートするには、関数本体内からパッケージ名を指定してrequire()
を呼び出します。
重要
モジュールをインポートするには
Node.js プロジェクトは通常、各ファイルのグローバル スコープにrequire()
呼び出しを配置しますが、App Services はこのパターンをサポートしていません。 App Services require()
呼び出しは関数スコープ内に配置する必要があります。
完全なモジュールをインポート
exports = () => { const R = require("ramda"); return R.map(x => x*2, [1,2,3]); }
モジュール サブフォルダーのインポート
exports = function(arg){ const cloneDeep = require("lodash/cloneDeep"); var original = { name: "Deep" }; var copy = cloneDeep(original); copy.name = "John"; console.log(`original: ${original.name}`); console.log(`copy: ${copy.name}`); return (original != copy); };