LoginSignup
3
3

More than 1 year has passed since last update.

Azure Functionsでzipデプロイせずに、コンソールからnpmパッケージをインストールする方法 (2021年秋)

Last updated at Posted at 2021-09-22

Azure Functionsでnpm等のライブラリを使う場合は、ZIPで固めてアップロードするzipデプロイのが一般的ですが、Node.jsに限って言えば Azure ポータル上から直接npm install する方法があります。

Azure Functions (Node.js) で npm パッケージを追加して利用する方法 (コンソール利用) の2021年版です

今回はis-oneという "それは '1' ですか?" を判定してくれるジョークライブラリを使ってみます。1

関数アプリの作成

Azure ポータルから関数アプリを作成します。
今回は i-need-libs-iesae2cu という名前で作成しました。以降はこの名前で解説します。

関数の作成

i-need-libs-iesae2cu 内に関数を作成します。
今回は「開発環境 = ポータル」「テンプレート = HTTP Trigger」で作成しました。そうすると HttpTrigger1 という関数が作成されます。以降はこの名前を使って解説します。

関数アプリの「コンソール」で npm install する

HttpTrigger1 が作成されたら i-need-libs-iesae2cu の管理画面に戻ります。
この管理画面には開発ツールのセクションに「コンソール」があります。これをクリックするとコマンドプロンプトが表示されます。このコマンドプロンプトが i-need-libs-iesae2cu 内の環境です。

D:\home\site\wwwroot\i-need-libs-iesae2cu のルートとなっており、この中に関数名 = ディレクトリとして作成されています。

D:\home\site\wwwroot>ls -lF
total 1
drwxr-xr-x 1 Unknown+User Unknown+Group   0 Sep 22 13:49 HttpTrigger1/
-rw-r--r-- 1 Unknown+User Unknown+Group 141 Sep 22 13:47 host.json

ここで HttpTrigger1 に移動して npm install すれば目的は達成です。

D:\home\site\wwwroot>cd HttpTrigger1
D:\home\site\wwwroot\HttpTrigger1>npm init --yes
D:\home\site\wwwroot\HttpTrigger1>npm install is-one

npm init --yespackage.json を作成するためです。関数実行時に package.json を求めらるため必須でが、初回の実行でOKです。
以降は npm install <lib> でインストール可能です。

output.gif

検証用コードと実行結果

index.js
const isOne = require('is-one');

module.exports = async function (context, req) {
    console.log(`1 is ONE? => ${isOne(1)}`);
    console.log(`2 is ONE? => ${isOne(2)}`);
    context.res = {status: 204};
}
2021-09-22T14:07:33.128 [Information] Executing 'Functions.HttpTrigger1' (Reason='This function was programmatically called via the host APIs.', Id=XX)
2021-09-22T14:07:33.137 [Information] 1 is ONE? => true
2021-09-22T14:07:33.137 [Information] 2 is ONE? => false
2021-09-22T14:07:33.145 [Information] Executed 'Functions.HttpTrigger1' (Succeeded, Id=XX, Duration=17ms)

ライブラリをメンテナンスする

これもコンソールから npm コマンドでメンテナンスできます。
初期化したければ node_modules package.json package-lock.json を削除すればOKです。

コンソール操作でよくあるミスやちょっと不便なところ

  • CTRL+W でウィンドウを閉じてしまう (^^;;;;
    • 速攻で CTRL+SHIFT+T でウィンドウ回復。
  • コピペができない (^^;;;;; → CTRL+V (もしくは CTRL+SHIFT+V) でできる模様

こういった面倒なことがあるため、ある程度大きなものになるようだったらzipデプロイを検討しましょう。

あとがき

EoT


  1. 他のライブラリへの依存が一切無いことから、サンプルとしては秀逸。 

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3