Node.js
package.json
サーチ…
備考
基本プロジェクト定義
{
"name": "my-project",
"version": "0.0.1",
"description": "This is a project.",
"author": "Someone <[email protected]>",
"contributors": [{
"name": "Someone Else",
"email": "[email protected]"
}],
"keywords": ["improves", "searching"]
}
フィールド | 説明 |
---|---|
名 | パッケージをインストールするために必要なフィールド。小文字、スペースなしの単一単語が必要です。 (ダッシュとアンダースコアは許可されています) |
バージョン | セマンティックバージョニングを使用してパッケージバージョンに必要なフィールド。 |
説明 | プロジェクトの簡単な説明 |
著者 | パッケージの作成者を指定する |
寄稿者 | コントリビュータごとに1つのオブジェクトの配列 |
キーワード | 文字列の配列、これは人々があなたのパッケージを見つけるのに役立ちます |
依存関係
"dependencies":{"module-name": "0.1.0"}
- 正確 :
0.1.0
はモジュールの特定のバージョンをインストールします。 - 最新のマイナーバージョン :
^0.1.0
は最新のマイナーバージョン(たとえば0.2.0
)をインストールしますが、上位メジャーバージョン(1.0.0
モジュールはインストールしません - 最新のパッチ :
0.1.x
または~0.1.0
例えば、利用できる最新のパッチバージョンをインストールします0.1.4
、しかし、より高いメジャーまたはマイナーバージョンで例えばモジュールをインストールしません0.2.0
または1.0.0
。 - ワイルドカード :
*
はモジュールの最新バージョンをインストールします。 - gitリポジトリ :以下は、 gitリポジトリのマスターブランチからtarballをインストールします。
#sha
、#tag
または#branch
も提供できます:- GitHub :
user/project
またはuser/project#v1.0.0
- url :
git://gitlab.com/user/project.git
またはgit://gitlab.com/user/project.git#develop
- GitHub :
- ローカルパス :
file:../lib/project
パッケージをpackage.jsonに追加したら、ターミナルのプロジェクトディレクトリにあるnpm install
コマンドを使用します。
devDependencies
"devDependencies": {
"module-name": "0.1.0"
}
スタイリングプロキシのテストのように、開発のためだけに必要な依存関係については、ext。プロダクションモードで "npm install"を実行している場合、これらのdev-dependenciesはインストールされません。
スクリプト
実行可能なスクリプト、または別のスクリプトの前後にトリガーされるスクリプトを定義できます。
{
"scripts": {
"pretest": "scripts/pretest.js",
"test": "scripts/test.js",
"posttest": "scripts/posttest.js"
}
}
この場合、次のコマンドのいずれかを実行してスクリプトを実行できます。
$ npm run-script test
$ npm run test
$ npm test
$ npm t
あらかじめ定義されたスクリプト
スクリプト名 | 説明 |
---|---|
事前公開 | パッケージが公開される前に実行します。 |
公開し、後で公開する | パッケージが公開された後に実行します。 |
プリインストール | パッケージがインストールされる前に実行してください。 |
インストール、ポストインストール | パッケージのインストール後に実行します。 |
プリインストール、アンインストール | パッケージがアンインストールされる前に実行します。 |
ポストアンインストール | パッケージがアンインストールされた後に実行します。 |
前バージョン、バージョン | パッケージ版をバンプする前に実行してください。 |
倒産 | パッケージ版をバンプしてから実行してください。 |
テスト前、テスト後、テスト後 | npm test コマンドで実行する |
プレストップ、停止、ポストストップ | npm stop コマンドで実行する |
プレスタート、開始、ポストスタート | npm start コマンドで実行する |
プレスタート、再起動、ポストレタート | npm restart コマンドで実行する |
ユーザー定義のスクリプト
あらかじめ定義されたスクリプトと同じように独自のスクリプトを定義することもできます。
{
"scripts": {
"preci": "scripts/preci.js",
"ci": "scripts/ci.js",
"postci": "scripts/postci.js"
}
}
この場合、次のコマンドのいずれかを実行してスクリプトを実行できます。
$ npm run-script ci
$ npm run ci
ユーザー定義スクリプトは、上記の例に示すように、 プレスクリプトとポストスクリプトもサポートしています。
拡張プロジェクト定義
追加の属性のいくつかは、 repository
、 bugs
またはhomepage
ようなnpmウェブサイトによって解析され、このパッケージのインフォボックスに表示されます
{
"main": "server.js",
"repository" : {
"type": "git",
"url": "git+https://github.com/<accountname>/<repositoryname>.git"
},
"bugs": {
"url": "https://github.com/<accountname>/<repositoryname>/issues"
},
"homepage": "https://github.com/<accountname>/<repositoryname>#readme",
"files": [
"server.js", // source files
"README.md", // additional files
"lib" // folder with all included files
]
}
フィールド | 説明 |
---|---|
メイン | このパッケージのエントリースクリプト。このスクリプトは、ユーザーがパッケージを要求したときに戻されます。 |
リポジトリ | 公開リポジトリの場所とタイプ |
バグ | このパッケージのバグトラッカー(githubなど) |
ホームページ | このパッケージまたは一般プロジェクトのホームページ |
ファイル | ユーザーがnpm install <packagename> したときにダウンロードされるファイルとフォルダのリストnpm install <packagename> |
package.jsonの探索
通常はプロジェクトルートに存在するpackage.json
ファイルには、アプリケーションまたはモジュールに関するメタデータと、 npm install
実行時にnpmからインストールする依存関係のリストが含まれています。
コマンドプロンプトでpackage.json
を初期化するには、 npm init
と入力します。
デフォルト値を使用してpackage.json
を作成するには、次のようにします。
npm init --yes
# or
npm init -y
パッケージをインストールしてpackage.json
保存するには:
npm install {package name} --save
簡略表記を使用することもできます。
npm i -S {package name}
NPMのエイリアス-S
を--save
と-D
に--save-dev
に指定すると、それぞれプロダクションまたは開発の依存関係を保存できます。
パッケージは依存関係に表示されます。あなたが使用している場合--save-dev
代わりの--save
、パッケージには、あなたのdevDependenciesに表示されます。
package.json
重要なプロパティ:
{
"name": "module-name",
"version": "10.3.1",
"description": "An example module to illustrate the usage of a package.json",
"author": "Your Name <[email protected]>",
"contributors": [{
"name": "Foo Bar",
"email": "[email protected]"
}],
"bin": {
"module-name": "./bin/module-name"
},
"scripts": {
"test": "vows --spec --isolate",
"start": "node index.js",
"predeploy": "echo About to deploy",
"postdeploy": "echo Deployed",
"prepublish": "coffee --bare --compile --output lib/foo src/foo/*.coffee"
},
"main": "lib/foo.js",
"repository": {
"type": "git",
"url": "https://github.com/username/repo"
},
"bugs": {
"url": "https://github.com/username/issues"
},
"keywords": [
"example"
],
"dependencies": {
"express": "4.2.x"
},
"devDependencies": {
"assume": "<1.0.0 || >=2.3.1 <2.4.5 || >=2.5.2 <3.0.0"
},
"peerDependencies": {
"moment": ">2.0.0"
},
"preferGlobal": true,
"private": true,
"publishConfig": {
"registry": "https://your-private-hosted-npm.registry.domain.com"
},
"subdomain": "foobar",
"analyze": true,
"license": "MIT",
"files": [
"lib/foo.js"
]
}
重要なプロパティに関する情報
name
パッケージの一意の名前。小文字にする必要があります。このプロパティは必須であり、パッケージはパッケージがなければインストールされません。
- 名前は214文字以下でなければなりません。
- 名前はドットまたはアンダースコアで始めることはできません。
- 新しいパッケージには名前に大文字を使用できません。
version
パッケージのバージョンはSemantic Versioning (semver)で指定します。これは、バージョン番号がMAJOR.MINOR.PATCHと書かれており、
- 互換性のないAPI変更を行うとMAJORバージョン
- 下位互換性のある方法で機能を追加すると、MINORバージョン
- 下位互換性のあるバグ修正を行う際のPATCHバージョン
description
プロジェクトの説明。短く簡潔にしてください。
author
このパッケージの著者。
bin
パッケージからバイナリスクリプトを公開するために使用されるオブジェクト。オブジェクトは、キーがバイナリスクリプトの名前であり、値がスクリプトへの相対パスであることを前提としています。
このプロパティは、CLI(コマンドラインインターフェイス)を含むパッケージで使用されます。
script
追加のnpmコマンドを公開するオブジェクト。オブジェクトは、キーがnpmコマンドであり、値がスクリプトパスであることを前提としています。これらのスクリプトは、 npm run {command name}
またはnpm run-script {command name}
実行すると実行されます。
コマンドラインインターフェイスを含み、ローカルにインストールされたパッケージは、相対パスなしで呼び出すことができます。したがって、. ./node-modules/.bin/mocha
mocha
を呼び出す代わりに、 mocha
を直接呼び出すことができます。
main
パッケージのメインエントリポイント。ノードでrequire('{module name}')
を呼び出すrequire('{module name}')
、これは実際に必要なファイルになります。
メインファイルを要求しても副作用が発生しないことを強くお勧めします。たとえば、メインファイルを要求すると、HTTPサーバーを起動したり、データベースに接続したりしないでください。代わりに、メインスクリプトにexports.init = function () {...}
ようなものを作成する必要があります。
keywords
あなたのパッケージを記述するキーワードの配列。これらは人々があなたのパッケージを見つけるのを助けるでしょう。
devDependencies
これらは、モジュールの開発とテストのみを目的とした依存関係です。依存関係は、 NODE_ENV=production
環境変数が設定されていない限り、自動的にインストールされます。このような場合は、 npm install --dev
を使用してこれらのパッケージをnpm install --dev
ことができますnpm install --dev
peerDependencies
このモジュールを使用している場合、peerDependenciesには、このモジュールの横にインストールする必要があるモジュールがリストされます。例えば、 moment-timezone
は、それが直接require("moment")
しない場合でもrequire("moment")
、 moment-timezone
プラグインなので、 moment
にインストールするrequire("moment")
ます。
preferGlobal
このページがnpm install -g {module-name}
を使用してグローバルにインストールされることを好むことを示すプロパティ。このプロパティは、CLI(コマンドラインインターフェイス)を含むパッケージで使用されます。
それ以外の場合は、このプロパティを使用しないでください。
publishConfig
publishConfigは、モジュールを公開するために使用される構成値を持つオブジェクトです。設定された設定値は、デフォルトのnpm設定を上書きします。
publishConfig
の最も一般的な使い方は、プライベートnpmレジストリにパッケージを公開することです。そのため、npmの利点がありますが、プライベートパッケージの利点もあります。これは単純にプライベートnpmのURLをレジストリキーの値として設定するだけです。
files
これは、公開パッケージに含めるすべてのファイルの配列です。ファイルパスまたはフォルダパスのいずれかを使用できます。フォルダパスのすべての内容が含まれます。これにより、配布する正しいファイルのみを含めることによって、パッケージの合計サイズが縮小されます。このフィールドは.npmignore
ルールファイルと連携して.npmignore
ます。