package.json
ファイルを更新するプログラマティックAPI。 NPM CLIがそれらを処理するのと同じ方法でファイルを更新および保存します。
npm install @npmcli/package-json
const PackageJson = require ( '@npmcli/package-json' )
const pkgJson = await PackageJson . load ( path )
// $ cat package.json
// {
// "name": "foo",
// "version": "1.0.0",
// "dependencies": {
// "a": "^1.0.0",
// "abbrev": "^1.1.1"
// }
// }
pkgJson . update ( {
dependencies : {
a : '^1.0.0' ,
b : '^1.2.3' ,
} ,
workspaces : [
'./new-workspace' ,
] ,
} )
await pkgJson . save ( )
// $ cat package.json
// {
// "name": "foo",
// "version": "1.0.0",
// "dependencies": {
// "a": "^1.0.0",
// "b": "^1.2.3"
// },
// "workspaces": [
// "./new-workspace"
// ]
// }
また、追加の正規化や機能を保存することなく、package.jsonファイルを開くためにエクスポートされるヘルパー関数もあります。
const { readPackage } = require ( '@npmcli/package-json/lib/read-package' )
const rawData = await readPackage ( './package.json' )
// rawData will now have the package.json contents with no changes or normalizations
constructor()
PackageJson
の新しい空のインスタンスを作成します。
async PackageJson.create(path)
指定されたパスで空のpackage.json
を作成します。すでに存在する場合は上書きされます。
async PackageJson.load(path, opts = {})
指定されたパスにpackage.json
をロードします。
opts
: Object
に含めることができます:create
: Boolean
trueの場合、新しいpackage.jsonがまだ存在しない場合は作成されます。解析できない既存のpackage.jsonをclobberしません。 ./
にあるpackage.json
ファイルのコンテンツをロードします。
const PackageJson = require ( '@npmcli/package-json' )
const pkgJson = new PackageJson ( )
await pkgJson . load ( './' )
package.json
ファイルが欠落している場合、または内容が無効な場合にエラーが発生します。
async PackageJson.load(path)
新しいインスタンスを返し、その場所からpackage.json
ファイルのコンテンツをロードするコンビニエンス静的メソッド。
path
: package.json
を読む場所からフォルダを指すString
./
にあるpackage.json
ファイルのコンテンツをロードします。
const PackageJson = require ( '@npmcli/package-json' )
const pkgJson = await PackageJson . load ( './' )
async PackageJson.normalize()
node_modulesツリー内のpackage.jsonファイルを正規化することを目的としています。 @npmcli/arborist
で使用できるようにするために、いくつかの軽い正規化が行われます
path
: package.json
を読む場所からフォルダを指すString
opts
: Object
に含めることができます:strict
: Boolean
normalizeData
ステップを適用するときにオプションの厳密なモードを有効にしますsteps
: package.json
ファイルに適用されるオプションArray
正規化手順、デフォルトの手順を置き換えるroot
: gitHead
ステップを適用するときに提供するPath
オプションのgitルートchanges
: Array
が提供されれば、パックメントに行われた各変更に関するメッセージがこの配列に追加されますasync PackageJson.normalize(path, opts = {})
normalize
前にload
呼び出すコンビニエンス静的
path
: package.json
を読む場所からフォルダを指すString
opts
: Object
に含めることができます:strict
: Boolean
normalizeData
ステップを適用するときにオプションの厳密なモードを有効にしますsteps
: package.json
ファイルに適用されるオプションArray
正規化手順、デフォルトの手順を置き換えるroot
: gitHead
ステップを適用するときに提供するPath
オプションのgitルートchanges
: Array
が提供されれば、パックメントに行われた各変更に関するメッセージがこの配列に追加されますasync PackageJson.prepare()
normalize
と同様ですが、Package.jsonファイルを公開用に準備することを目的としています。
async PackageJson.prepare(path, opts = {})
prepare
前にload
呼び出すための静的な便利さ
path
: package.json
を読む場所からフォルダを指すString
opts
: Object
に含めることができます:strict
: Boolean
normalizeData
ステップを適用するときにオプションの厳密なモードを有効にしますsteps
: package.json
ファイルに適用されるオプションArray
正規化手順、デフォルトの手順を置き換えるroot
: gitHead
ステップを適用するときに提供するPath
オプションのgitルートchanges
: Array
が提供されれば、パックメントに行われた各変更に関するメッセージがこの配列に追加されますasync PackageJson.fix()
normalize
と同様ですが、 npm pkg fix
コマンドを対象としています。
PackageJson.update(content)
package.json
のコンテンツをcontent
を提供して更新します。
content
: package.json
ファイルで更新/置き換えるプロパティを含むObject
。 dependencies
、 devDependencies
、 optionalDependencies
、 peerDependencies
関係などの特別な特性には、ソートや重複排除など、これらのオプションの更新を処理するための特別なロジックがあります。
new-script
という名前の新しいスクリプトをpackage.json
scripts
プロパティに追加します。
const PackageJson = require ( '@npmcli/package-json' )
const pkgJson = await PackageJson . load ( './' )
pkgJson . update ( {
scripts : {
... pkgJson . content . scripts ,
'new-script' : 'echo "Bom dia!"'
}
} )
注:依存関係を操作する場合、更新ロジックにはこれらのプロパティ間にある程度の相互依存性があるため、すべての既知の依存関係タイプに値を提供することが重要です。
devDependency
を追加し、既存のpackage.json
のすべてのピア依存関係を削除する安全な方法:JSON:
const PackageJson = require ( '@npmcli/package-json' )
const pkgJson = await PackageJson . load ( './' )
pkgJson . update ( {
dependencies : pkgJson . content . dependencies ,
devDependencies : {
... pkgJson . content . devDependencies ,
foo : '^[email protected]' ,
} ,
peerDependencies : { } ,
optionalDependencies : pkgJson . content . optionalDependencies ,
} )
PackageJson.content
を取得しますロードされたpackage.json
ファイルから読み取られた正規化されたObject
を取得するゲッター。
const PackageJson = require ( '@npmcli/package-json' )
const pkgJson = await PackageJson . load ( './' )
pkgJson . content
// -> {
// name: 'foo',
// version: '1.0.0'
// }
async PackageJson.save()
load()
呼び出すときに使用される同じ場所に現在のcontent
保存します。
ISC