publish-manager v0.0.1
publish-manager
publish-manager目前仅用于在发包之前修改package.json文件,比如删除、添加甚至合并一些字段。
Install
npm install publish-manager -D或者全局安装
npm install publish-manager -gUsage
publish-manager主要有两个命令,cleanse和restore。
cleanse
publish-manager cleanse用于整理package.json的内容。按配置删除、添加和合并一些字段。
restore
publish-manager restore用于还原package.json的内容。
更方便的使用方式
通过添加npm script的方式会更方便,不过可能有个小细节需要注意下:
当不需要删除package.json中的scripts字段时,可以配置为:
{
"scripts": {
"prepublish": "publish-manager cleanse",
"postpublish": "publish-manager restore"
}
}当需要删除package.json中的scripts字段时,如果还配置为prepublish和postpublish的话, 由于在prepublish阶段删除掉了scripts字段,即删除了所有的
scripts,会导致postpublish阶段定义的命令无法再被执行, 从而会使package.json不能自动还原(不能自动还原时可以手动执行npx publish-manager restore来还原)。
所以更建议配置为:
{
"scripts": {
"custom:publish": "publish-manager cleanse && npm publish && publish-manager restore"
}
}Config
publish-manager在项目根目录下查找配置文件的顺序为.publish-manager.js、 .publish-manager.json、 .publish-manager。 如果均未找到,
最后会从package.json文件中查找publish-manager字段作为配置。
Javascript格式的配置方式
在.publish-manager.js中的配置参考如下:
module.exports = {
indent: 2,
// removeFields 既支持数组也支持对象格式,但是细节上有一些区别
// removeFields: [ "scripts", "lint-staged", "config", "devDependencies" ],
removeFields: {
scripts: true,
"lint-staged": true,
config: true,
devDependencies: true,
dependencies: ["vue"]
},
addFields: {
author: "author's info",
peerDependencies: {
vue: "^3.2.0"
}
}
}Json格式的配置方式
在.publish-manager.json或者.publish-manager文件中使用json格式的配置:
{
"indent": 2,
"removeFields": {
"scripts": true,
"lint-staged": true,
"config": true,
"devDependencies": true,
"dependencies": [
"vue"
]
},
"addFields": {
"author": "author's info",
"peerDependencies": {
"vue": "^3.2.0"
}
}
}Options
indent
Type:
String|Number
Default:2
定义用于格式化整理后的package.json的缩进。 有关更多信息 , 请参见JSON.stringify的space参数。addFields
Type:
Object
Default:{}指定需要新增或合并的字段。removeFields
Type:
Array|Object
Default:{}指定需要删除的字段。虽然Array和Object格式都可以配置删除的字段,但是两者之间有些细微的区别。对于如下的
package.json时:{ "scripts": { "serve": "...serve", "build": "...build", "test": "...test", "prepare": "...prepare" } }当要删除的字段为
package.json的一级字段时,该项配置在Array或者Object中没有区别; 例如要删除"scripts"字段,可以配置成removeFields: ["scripts"]或removeFields: {"scripts": true}。 当要删除的字段为二级及以上字段时,此时配置在Array中的字段会被删除; 如removeFields: {"scripts": ["serve", "build"]}会删除"serve"和"build"保留"test"和"prepare"; 配置在Object中的字段,当为false时会被保留,其余的全会被删除,包括未指定的字段; 如:{ "removeFields": { "scripts": { "prepare": false, "test": true } } }上面的配置仅会保留
"prepare"字段。
采用这种表现是为了方便的只保留某些字段或者只删除某些字段。
4 years ago