Npmを使用してLinuxサーバーでNode.jsパッケージをビルドおよび公開する方法
序章
Node.jsは、サーバーサイドプログラミングで人気のあるJavascriptプラットフォームであり、Webアプリをすばやく構築して実行できます。
このガイドでは、Node.jsパッケージ管理システムであるnpm
の使用方法について説明します。 過去のガイドでは、Ubuntu14.04サーバーにNode.jsをインストールする方法について説明しました。 また、パッケージを検索して取得することでnpmをパッケージコンシューマーとして使用する方法についても説明しました。
ここでは、構成設定を変更する方法、パッケージを作成して公開する方法、およびnpmパッケージリポジトリを操作する方法について説明します。 すぐに飛び込みましょう。
構成設定の管理
npmの動作を制御するために、ツールの設定を調整できます。 これを行うためにnpmに組み込まれている方法はかなりあります。
現在の構成設定の一覧表示
まず、現在の設定を見てみましょう。 これを行うには、次のように入力します。
npm config ls
; cli configs registry = "https://registry.npmjs.org/" user-agent = "npm/1.4.9 node/v0.11.13 linux x64" ; node bin location = /home/demouser/.nvm/v0.11.13/bin/node ; cwd = /home/demouser/projects/test_package ; HOME = /home/demouser ; 'npm config ls -l' to show all defaults.
この設定のリストは、現在の動作環境を含むさまざまな場所から取得されます。 コマンドの実行時にビルドされます。 -g
フラグを渡すことで、これをテストできます。 「グローバル」オプションが設定されていることが突然表示されます。
npm config ls -g
; cli configs global = true Registry =“ https://registry.npmjs.org/ ” user-agent =“ npm / 1.4.9 node / v0.11.13 linux x64”。 . .
現在、はまだ作成されていない構成ファイルがないため、npmは構成ファイルから情報を取得していません。 環境(現在のディレクトリなど)から情報を収集し、アプリケーションのデフォルトを使用するだけです。
ただし、このコマンドのデフォルトのほとんどは表示されません。 より詳細な情報を取得するには、-l
フラグを渡す必要があります。
npm config ls -l
; cli configs long = true registry = "https://registry.npmjs.org/" user-agent = "npm/1.4.9 node/v0.11.13 linux x64" ; default values always-auth = false bin-links = true browser = null ca = null . . .
特定の値の取得と設定
ご覧のとおり、多くのキーと値のペアの情報があります。 これは、npm内の構成値を操作する方法です。 たとえば、「editor」キーの現在の値を確認するには、次のように入力します。
npm config get editor
vi
この値を変更したい場合は、次のように入力することで簡単に変更できます。
npm config set editor vim
これは2つのことを行います。 デフォルト値(vi)を新しい値(vim)で上書きし、最初のカスタム値であるため、また構成ファイルを作成します。
設定ファイルはどこに書かれていますか? npmに聞いてみませんか:
npm config get userconfig
/home/demouser/.npmrc
config set -g
構文を使用して値を設定すると、globalconfig
ファイルに書き込まれます。 次のように入力すると、これが保存されている場所を確認できます。
npm config get globalconfig
/home/demouser/.nvm/v0.11.13/etc/npmrc
ファイルの場所は、Node.jsのインストールに使用した方法によって異なります。 繰り返しますが、このファイルは、グローバルレベルのデフォルト値から外れるまで存在しません。
が存在するファイルの場合、エディターで編集する場合は、次のように入力します。
npm config edit
これは、ファイルがまだ作成されていない場合は機能しません(手動で、またはnpm内にデフォルト以外の値を設定することによって)。
次の構文を使用して、特定のコマンドを呼び出すときに、さまざまな構成オプションを設定することもできます。
npmサブコマンド-キー値
値が取得される他の領域は、プロジェクト自体のpackage.json
ファイルと環境変数です。
npmでパッケージを作成する
npmを標準のパッケージマネージャーとして使用して、アプリケーションに必要な依存関係とパッケージを取得および管理する方法について少し学びました。 ただし、npmを使用して、アプリケーションまたはライブラリをパッケージ化して共有することもできます。
npmが最初に役立つことの1つは、プロジェクトのpackage.jsonファイルを生成することです。 始める前に、このヘルプページを見て、質問されるフィールドに精通している必要があります。
npm help json
アプリケーションディレクトリに移動したら、次のことを開始できます。
cd ~/projects/test_package npm init
これにより、パッケージファイルを作成するために必要な情報の入力を求められます。 デフォルト値を設定するには、環境からいくつかの手がかりが必要です。 セッションは次のようになります。
name: (test_package) version: (0.0.0) 0.0.1 description: A test package entry point: (index.js) index.js test command: echo "test" git repository: http://fake.git.repo.com keywords: test author: me license: (ISC) GLP About to write to /home/demouser/projects/test_package/package.json: { "name": "test_package", "version": "0.0.1", "description": "A test package", "main": "index.js", "dependencies": { "express": "^4.2.0" }, "devDependencies": {}, "scripts": { "test": "echo \"test\"" }, "keywords": [ "test" ], "author": "me", "license": "GLP" } Is this ok? (yes) yes
package.json
ファイルを生成した後で追加の依存関係をインストールする必要がある場合は、--save
フラグを指定してインストールする必要があります。これにより、package.json
ファイルの依存関係リストが更新されます。
パッケージに特定のバージョンが必要な場合は、shrinkwrap
サブコマンドを使用できます。 通常、パッケージファイルは、現在のパッケージを、ビルドに必要な最小の実行可能なバージョンとして設定します。 シュリンクラップファイルでは、これらのバージョンは特定のものであり、ロックダウンされています。
このファイルは次のコマンドで作成できます。
npm shrinkwrap
これにより、npm-shrinkwrap.json
というファイルが生成され、各依存関係の非常に詳細なパッケージ情報が再帰的に含まれます。 アプリケーション環境がデリケートな場合、これは不可欠なツールです。
npmを介したnpmWebサイトとの対話
npmプロジェクトは、npmjs.orgにパッケージのWebサイトを維持しています。 npmコマンドラインツールを使用して、実際にこのサイトを操作できます。 パッケージを検索する方法についてはすでに説明しましたが、さらに多くの機能もあります。
まず、まだアカウントにサインアップしていない場合は、からnpmインターフェイス内で次のように入力してサインアップできます。
npm adduser
ユーザー名、パスワード、および電子メールアドレスを選択するように求められます。 これらは、Webブラウザから登録する場合と同じようにサイトに投稿されます。
構成を確認すると、新しいアカウントの詳細が表示されます。
npm config ls
. . . ; userconfig /home/demouser/.npmrc editor = "vim" email = "[email protected]" username = "demouser" . . .
パッケージを公開する
より大きなNode.jsコミュニティと共有したいパッケージを作成したら、npmサイトから始めるのが最適です。
幸い、npmにはいくつかのヘルパー関数が付属しています。
パッケージのディレクトリにいる場合は、次のように入力するだけです。
npm publish
これにより、パッケージがnpmWebサイトにプッシュされます。 この操作が成功するかどうかは、パッケージが一意の名前とバージョン番号を持っているかどうかによって異なります。 そこに行ってパッケージを検索すると、他のNode.jsパッケージと同じようにリストされているはずです。
アップロードにタグを付ける
tag
サブコマンドを使用して、パッケージの特定のリリースにタグを付けることができます。 これらは、インストールおよび依存関係の指定時にバージョン番号の代わりに使用できます。
デフォルトでは、npmには、公開するパッケージに「最新」というラベルの付いたタグが含まれます。 これは、最新のプッシュを示しています。 次のように入力すると、これを確認できます。
npm config get tag
latest
これは、次のように入力することで、最新バージョンを具体的にリクエストできることを意味します。
npm install package@latest
パッケージ/バージョンの組み合わせの1つにタグを追加する場合は、次のように入力できます。
npmタグパッケージ@バージョンtag_name
これにより、バージョン番号の代わりに「tag_name」でタグ付けしたバージョンを参照できるようになります。
パッケージの所有権の変更
デフォルトでは、パッケージを公開すると、パッケージの所有権が付与されます。
次のように入力して、これを確認できます。
npm owner ls package_name
デモユーザー @ドメイン .com>
プロジェクトに人を追加して変更を加えることができるようにする場合は、次のようなコマンドを発行できます。
npm所有者はユーザー名を追加します
これを逆にして、次のようにユーザーから権限を削除することもできます。
npm所有者rmユーザー名
この記事の執筆時点では、パッケージのすべての所有者が同じ権限を持っているため、よりきめ細かいアクセス制御を割り当てることはできません。
パッケージの削除と非推奨
場合によっては、パッケージに重要な変更があり、古いバージョンを廃止する必要があります。 たとえば、セキュリティ上の問題があった可能性があります。
npmを使用すると、次のように入力することで、パッケージのバージョンまたはバージョン範囲を簡単に廃止できます。
npm deprecate package_name @“ version_or_range deprecation_message_to_users ”
含めることを選択したメッセージは、マークしたパッケージバージョンをインストールしているすべてのユーザーへの警告として表示されます。
パッケージを完全に削除したい場合は、非公開にすることでそれを行うことができます。 パッケージが他の人によって使用されていて、npmが代わりにパッケージを非推奨にすることを推奨している場合は、おそらくこれを行うべきではありません。 特定のバージョンを非公開にすることもできますが、同じ提案が当てはまります。
注意すべき重要な点は、パッケージを非公開にしてサイトから削除しても、保持していた名前とバージョンの組み合わせを再利用することはできないということです。 これは、人々が誤って間違ったパッケージを引っ張らないようにするためです。
作業を非公開にするための構文は次のとおりです。
npm unpublish package_name @ version
パッケージ全体を削除する場合は、@versionを省略できます。 この場合、--force
フラグを追加して、プロジェクト全体が誤って削除されないようにする必要があります。
npm unpublish --force package_name
結論
これで、Node.jsプロジェクトでnpmの機能を活用する方法をかなり深く理解できたはずです。 npmユーティリティは、ファイルの作成や依存関係の取得から、パッケージの公開や本番環境へのデプロイまで、プロジェクト開発のほとんどの領域を支援するために使用できます。