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
If True, 새로운 package.json은 아직 존재하지 않으면 생성됩니다. 구문 분석 할 수없는 기존 package.json을 클로브하지 않습니다. 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
: Array
옵션 정규화 단계는 package.json
파일에 적용될 기본 단계를 대체합니다.root
: gitHead
단계를 적용 할 때 제공 할 Path
선택적 git 루트changes
: Array
이 제공된 경우 배열, 패키지에 대한 각 변경 사항에 대한 메시지 가이 배열에 추가됩니다.async PackageJson.normalize(path, opts = {})
normalize
호출하기 전에 load
호출하는 편의성 정적
path
: package.json
을 읽을 위치에서 폴더를 가리키는 String
opts
: Object
다음을 포함 할 수 있습니다.strict
: Boolean
normalizeData
단계를 적용 할 때 선택적인 엄격한 모드를 활성화합니다.steps
: Array
옵션 정규화 단계는 package.json
파일에 적용될 기본 단계를 대체합니다.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
: Array
옵션 정규화 단계는 package.json
파일에 적용될 기본 단계를 대체합니다.root
: gitHead
단계를 적용 할 때 제공 할 Path
선택적 git 루트changes
: Array
이 제공된 경우 배열, 패키지에 대한 각 변경 사항에 대한 메시지 가이 배열에 추가됩니다.async PackageJson.fix()
normalize
와 마찬가지로 npm pkg fix
명령을위한 것입니다.
PackageJson.update(content)
제공된 content
로 package.json
의 내용을 업데이트합니다.
content
: package.json
파일에 업데이트/대체 할 속성이 포함 된 Object
. dependencies
, devDependencies
, optionalDependencies
, peerDependencies
와 같은 특수 특성은 정렬 및 중복 제거와 같은 이러한 옵션의 업데이트를 처리하는 특별한 논리를 갖습니다.
package.json
scripts
속성에 new-script
라는 새 스크립트를 추가합니다.
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
의 모든 피어 종속성을 제거하는 안전한 방법.
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
검색하는 getter.
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