软件包-json
此库允许您加载、操纵和写入内容
(单位:千美元) package.json 文档.
它还规定: 更改日志 详细说明任何更改
这已经做了.
使用量
npm install @financial-times/package-json
装入包 Json
装入指定后 package.json 文档输入内存 loadPackageJson 方法返回可用于修改 package.json 文档并把这些修改写回磁盘中.
const loadPackageJson = require("@financial-times/package-json");
const packageJson = loadPackageJson({ filepath: `filepath/to/package.json` });
返回的方法 :
起来
返回代表当前工作状态的对象 package.json 文档。 如果尚未通过调用来写入更改, 这可能与文件系统中存在的内容不同 writeChanges 方法.
packageJson.get();
有变化可写入
检查是否有要写入的文件更改 .
packageJson.hasChangesToWrite(); // true or false
写入更改
写给 package.json 文档.
packageJson.writeChanges(); // true
获取字段
从中获取特定字段 package.json 对象,通过传递字段作为参数.
packageJson.getField("name"); // "@financial-times/package-json"
设置
设置特定字段的值 package.json 对象并返回更改日志条目.
packageJson.setField("name", "newName");
返回更改日志条目对象 :
{
"event": "setField",
"field": "name",
"meta": {},
"previousValue": "oldName",
"alreadyExisted": false
}
删除字段
删除 package.json 对象并返回更改日志条目.
packageJson.removeField("license");
返回更改日志条目对象 :
{
"event": "removeField",
"field": "license",
"meta": {},
"previousValue": "MIT",
"alreadyExisted": true
}
需要依赖性
要求软件包作为依赖存在于 package.json。 。 。 .
packageJson.requireDependency({
pkg: "prettier",
version: "1.16.4",
field: "devDependencies"
});
返回更改日志条目对象 :
{
"event": "requireDependency",
"field": "devDependencies",
"meta": {
"pkg": "prettier",
"version": "1.16.4"
},
"previousValue": "1.16.3",
"alreadyExisted": true
}
删除依赖性
删除作为依赖的软件包 package.json。 。 。 .
packageJson.removeDependency({
pkg: "prettier",
version: "1.16.4",
field: "devDependencies"
});
返回更改日志条目对象,或 false 如果依赖不存在:
{
"event": "removeDependency",
"field": "devDependencies",
"meta": {
"pkg": "prettier"
},
"previousValue": "1.16.3",
"alreadyExisted": true
}
需要脚本
要求脚本存在于 scripts 领域 package.json。 。 。 .
packageJson.requireScript({
stage: "test",
command: "npm run unit-test"
});
返回更改日志条目对象 :
{
"event": "requireScript",
"field": "scripts",
"meta": {
"stage": "test"
},
"alreadyExisted": true
}
删除脚本
要求脚本存在于 scripts 领域 package.json。 。 。 .
packageJson.removeScript({
stage: "lint"
});
返回更改日志条目对象 :
{
"event": "removeScript",
"field": "scripts",
"meta": {
"stage": "lint"
},
"alreadyExisted": true
}
获取 Changgerog
更改日志代表了对 package.json
对象,无论是否已经写入文件.
更改日志由条目对象组成,这些对象都具有以下属性:
event- 活动的类型,即.setField, (中文(简体) ),requireDependency, (中文(简体) ),removeDependency或者说requireScriptfield- 球场在package.json已经改变alreadyExisted- 标记字段是否已经存在previousValue- 该字段的上个值meta- 包含变化等额外细节的物体.pkg, (中文(简体) ),version, (中文(简体) ),stage
您可以使用下列方法访问更改日志条目:
getChangelog()getChangelog.asMessages()getChangelog.lastEntry()getChangelog.lastEntryAsMessage()
与更改日志合作的例子
packageJson.requireDependency({
pkg: "prettier",
version: "1.16.4",
field: "devDependencies"
});
packageJson.requireScript({
stage: "test",
command: "npm run unit-test"
});
const changelogObjects = packageJson.getChangelog();
/*
[
{
event: "requireDependency",
field: "devDependencies",
meta: {
pkg: "prettier",
version: "1.16.4"
},
previousValue: "1.16.3",
alreadyExisted: true
},
{
event: "requireScript",
field: "scripts",
meta: {
stage: "test"
},
alreadyExisted: true
}
]
*/
const changelogMessages = packageJson.getChangelog.asMessages();
/*
[
"Required package [email protected] in devDependencies, previously 1.16.3",
"Required script for stage 'test' (overwrote existing command)"
]
*/
const lastChangelogEntryObject = packageJson.getChangelog.lastEntry();
/*
{
event: "requireScript",
field: "scripts",
meta: {
stage: "test"
},
alreadyExisted: true
}
*/
const lastChangelogEntryMessage = packageJson.getChangelog.lastEntryAsMessage();
// "Required script for stage 'test' (overwrote existing command)"