我有一个简单的包裹。json文件,我想添加一个评论。有办法做到这一点吗,或者有什么hack可以做到这一点吗?
{
"name": "My Project",
"version": "0.0.1",
"private": true,
"dependencies": {
"express": "3.x",
"mongoose": "3.x"
},
"devDependencies" : {
"should": "*"
/* "mocha": "*" not needed as should be globally installed */
}
}
上面的示例注释在npm崩溃时不起作用。我还尝试了// style注释。
正如这个答案所解释的,//键是保留的,所以它可以常规地用于注释。//注释的问题是它不实用,因为它不能被多次使用。在包上删除重复的密钥。Json自动更新:
"//": "this comment about dependencies stays",
"dependencies": {}
"//": "this comment disappears",
"devDependencies": {}
另一个问题是// comment不能在依赖项和devDependencies中使用,因为它被视为常规依赖项:
"dependencies": {
"//": "comment"
}
npm犯错!代码EINVALIDPACKAGENAME
npm犯错!无效的包名“//”:名称只能包含url友好
字符
在NPM中工作的一个变通方法,而不是Yarn,是使用一个非字符串值:
"dependencies": {
"foo": ["unused package"],
}
一个在NPM和Yarn中工作的变通方法是添加一个注释作为语义版本控制的一部分:
"dependencies": {
"bar": "^2",
"foo": "^2 || should be removed in 1.x release"
}
注意,如果OR之前的第一部分不匹配,则可以解析来自注释的版本,例如1.x。
需要注释但没有安装的包应该移动到另一个键,例如dependencies //:
"dependencies //": {
"baz": "unused package",
}
受这条线索的启发,下面是我们正在使用的:
{
"//dependencies": {
"crypto-exchange": "Unified exchange API"
},
"dependencies": {
"crypto-exchange": "^2.3.3"
},
"//devDependencies": {
"chai": "Assertions",
"mocha": "Unit testing framwork",
"sinon": "Spies, Stubs, Mocks",
"supertest": "Test requests"
},
"devDependencies": {
"chai": "^4.1.2",
"mocha": "^4.0.1",
"sinon": "^4.1.3",
"supertest": "^3.0.0"
}
}
NPS(节点包脚本)为我解决了这个问题。它允许你把NPM脚本放到一个单独的JavaScript文件中,在那里你可以添加大量的注释和任何其他你需要的JavaScript逻辑。
https://www.npmjs.com/package/nps
来自我的一个项目的package-scripts.js示例
module.exports = {
scripts: {
// makes sure e2e webdrivers are up to date
postinstall: 'nps webdriver-update',
// run the webpack dev server and open it in browser on port 7000
server: 'webpack-dev-server --inline --progress --port 7000 --open',
// start webpack dev server with full reload on each change
default: 'nps server',
// start webpack dev server with hot module replacement
hmr: 'nps server -- --hot',
// generates icon font via a gulp task
iconFont: 'gulp default --gulpfile src/deps/build-scripts/gulp-icon-font.js',
// No longer used
// copyFonts: 'copyfiles -f src/app/glb/font/webfonts/**/* dist/1-0-0/font'
}
}
我只是做了一个本地安装npm安装nps -save-dev,并把它放在我的包。json脚本。
"scripts": {
"start": "nps",
"test": "nps test"
}
正如这个答案所解释的,//键是保留的,所以它可以常规地用于注释。//注释的问题是它不实用,因为它不能被多次使用。在包上删除重复的密钥。Json自动更新:
"//": "this comment about dependencies stays",
"dependencies": {}
"//": "this comment disappears",
"devDependencies": {}
另一个问题是// comment不能在依赖项和devDependencies中使用,因为它被视为常规依赖项:
"dependencies": {
"//": "comment"
}
npm犯错!代码EINVALIDPACKAGENAME
npm犯错!无效的包名“//”:名称只能包含url友好
字符
在NPM中工作的一个变通方法,而不是Yarn,是使用一个非字符串值:
"dependencies": {
"foo": ["unused package"],
}
一个在NPM和Yarn中工作的变通方法是添加一个注释作为语义版本控制的一部分:
"dependencies": {
"bar": "^2",
"foo": "^2 || should be removed in 1.x release"
}
注意,如果OR之前的第一部分不匹配,则可以解析来自注释的版本,例如1.x。
需要注释但没有安装的包应该移动到另一个键,例如dependencies //:
"dependencies //": {
"baz": "unused package",
}