API programática para atualizar os arquivos package.json
. Atualiza e salva arquivos da mesma maneira que a CLI da NPM lida com eles.
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"
// ]
// }
Há também uma função auxiliar exportada para abrir um arquivo package.json sem normalização extra ou funcionalidade de salvamento.
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()
Cria uma nova instância vazia do PackageJson
.
async PackageJson.create(path)
Cria um package.json
no caminho fornecido. Se já existir, será substituído.
async PackageJson.load(path, opts = {})
Carrega um package.json
no caminho fornecido.
opts
: Object
pode conter:create
: Boolean
Se True, um novo package.json será criado se ainda não existir. Não vai tocar package.json que não pode ser analisado. Carrega o conteúdo de um arquivo package.json
localizado em ./
:
const PackageJson = require ( '@npmcli/package-json' )
const pkgJson = new PackageJson ( )
await pkgJson . load ( './' )
Lança um erro no caso de um arquivo package.json
estar ausente ou ter conteúdo inválido.
async PackageJson.load(path)
ESTÁTICO (PATH) Método estático de conveniência que retorna uma nova instância e carrega o conteúdo de um arquivo package.json
desse local.
path
: String
que aponta para a pasta de onde ler o package.json
de Carrega o conteúdo de um arquivo package.json
localizado em ./
:
const PackageJson = require ( '@npmcli/package-json' )
const pkgJson = await PackageJson . load ( './' )
async PackageJson.normalize()
Destinado a normalizar os arquivos package.json em uma árvore Node_modules. Alguma normalização da luz é feita para garantir que esteja pronto para uso em @npmcli/arborist
path
: String
que aponta para a pasta de onde ler o package.json
deopts
: Object
pode conter:strict
: Boolean
permite o modo rigoroso opcional ao aplicar a etapa normalizeData
steps
: Array
Etapas de normalização opcionais que serão aplicadas ao arquivo package.json
, substituindo as etapas padrãoroot
: Path
Opcional Git Root para fornecer ao aplicar a etapa gitHead
changes
: Array
Se fornecido, uma mensagem sobre cada alteração feita no embalagem será adicionada a esta matrizasync PackageJson.normalize(path, opts = {})
Conveniência estática que chama load
antes de ligar normalize
path
: String
que aponta para a pasta de onde ler o package.json
deopts
: Object
pode conter:strict
: Boolean
permite o modo rigoroso opcional ao aplicar a etapa normalizeData
steps
: Array
Etapas de normalização opcionais que serão aplicadas ao arquivo package.json
, substituindo as etapas padrãoroot
: Path
Opcional Git Root para fornecer ao aplicar a etapa gitHead
changes
: Array
Se fornecido, uma mensagem sobre cada alteração feita no embalagem será adicionada a esta matrizasync PackageJson.prepare()
Como normalize
, mas destinado a preparar arquivos package.json para publicação.
async PackageJson.prepare(path, opts = {})
Conveniência estática que chama load
antes de ligar prepare
path
: String
que aponta para a pasta de onde ler o package.json
deopts
: Object
pode conter:strict
: Boolean
permite o modo rigoroso opcional ao aplicar a etapa normalizeData
steps
: Array
Etapas de normalização opcionais que serão aplicadas ao arquivo package.json
, substituindo as etapas padrãoroot
: Path
Opcional Git Root para fornecer ao aplicar a etapa gitHead
changes
: Array
Se fornecido, uma mensagem sobre cada alteração feita no embalagem será adicionada a esta matrizasync PackageJson.fix()
Como normalize
, mas destinado ao comando npm pkg fix
.
PackageJson.update(content)
Atualiza o conteúdo de um package.json
com o content
fornecido.
content
: Object
que contém as propriedades a serem atualizadas/substituídas no arquivo package.json
. Propriedades especiais, como dependencies
, devDependencies
, optionalDependencies
, peerDependencies
terão lógica especial para lidar com a atualização dessas opções, como classificação e desduplicação.
Adiciona um novo script chamado new-script
à sua propriedade 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!"'
}
} )
Nota: Ao trabalhar com dependências, é importante fornecer valores para todos os tipos de dependência conhecidos, pois a lógica de atualização possui alguma interdependência entre essas propriedades.
Uma maneira segura de adicionar uma devDependency
e remover todas as dependências de pares de um package.json
existente.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
Getter que recupera o Object
normalizado lido do arquivo package.json
carregado.
const PackageJson = require ( '@npmcli/package-json' )
const pkgJson = await PackageJson . load ( './' )
pkgJson . content
// -> {
// name: 'foo',
// version: '1.0.0'
// }
async PackageJson.save()
Salva o content
atual no mesmo local usado ao chamar load()
.
ISC