간단한 package.json 파일이 있고 주석을 추가하고 싶습니다. 이 작업을 수행 할 수있는 방법이 있습니까, 아니면이 작업을 수행하기위한 해킹이 있습니까?
{
"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 나누기로 작동하지 않습니다. // 스타일 주석을 시도했습니다.
답변
이것은 최근 node.js 메일 링리스트 에서 논의되었습니다 .
npm을 만든 Isaac Schlueter에 따르면 :
… “//”키는 npm에서 어떤 목적으로도 사용되지 않으며 주석 용으로 예약되어 있습니다 … 여러 줄 주석을 사용하려면 배열 또는 여러 “//”를 사용할 수 있습니다 열쇠.
일반적인 도구 (npm, yarn 등)를 사용하면 여러 개의 “//”키가 제거됩니다. 이것은 살아남는다 :
{ "//": [
"first line",
"second line" ] }
이것은 살아남지 못할 것입니다 :
{ "//": "this is the first line of a comment",
"//": "this is the second line of the comment" }
답변
JSON에 주석을 추가하는 또 다른 해킹이 있습니다. 이후:
{"a": 1, "a": 2}
에 해당
{"a": 2}
당신은 다음과 같은 것을 할 수 있습니다 :
{
"devDependencies": "'mocha' not needed as should be globally installed",
"devDependencies" : {
"should": "*"
}
}
답변
복잡하고 해킹 된 솔루션에 대해 한 시간을 낭비한 후에서 부피가 큰 종속성 섹션에 주석을 달기위한 간단하고 유효한 솔루션을 모두 발견했습니다 package.json
. 이처럼 :
{
"name": "package name",
"version": "1.0",
"description": "package description",
"scripts": {
"start": "npm install && node server.js"
},
"scriptsComments": {
"start": "Runs development build on a local server configured by server.js"
},
"dependencies": {
"ajv": "^5.2.2"
},
"dependenciesComments": {
"ajv": "JSON-Schema Validator for validation of API data"
}
}
같은 방식으로 정렬하면 git commit diffs 또는으로 작업하는 동안 편집기에서 이러한 종속성 / 주석 쌍을 추적하는 것이 매우 쉽습니다 package.json
.
추가 도구가 필요하지 않으며 평범하고 유효한 JSON입니다.
이것이 누군가를 돕기를 바랍니다.
답변
많은 흥미로운 아이디어.
내가하고있는 일은 이것입니다 :
{
...
"scripts": {
"about": "echo 'Say something about this project'",
"about:clean": "echo 'Say something about the clean script'",
"clean": "do something",
"about:build": "echo 'Say something about building it'",
"build": "do something",
"about:watch": "echo 'Say something about how watch works'",
"watch": "do something",
}
...
}
이 방법으로 스크립트 자체에서 “의사-의견”을 읽고 터미널에서 어떤 종류의 도움을보기 위해 다음과 같은 것을 실행할 수 있습니다.
npm run about
npm run about:watch
이 토론을위한 나의 2cents 🙂
답변
NPS (노드 패키지 스크립트)가이 문제를 해결했습니다. NPM 스크립트를 별도의 JS 파일에 저장하면 주석을 추가하고 필요한 다른 JS 로직을 추가 할 수 있습니다.
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 install nps -save-dev
하고 package.json
스크립트에 넣었습니다 .
"scripts": {
"start": "nps",
"test": "nps test"
}
답변
중복 된 키를 덮어 쓴다는 사실을 항상 남용 할 수 있습니다. 이것은 내가 방금 쓴 것입니다.
"dependencies": {
"grunt": "...",
"grunt-cli": "...",
"api-easy": "# Here is the pull request: https://github.com/...",
"api-easy": "git://..."
"grunt-vows": "...",
"vows": "..."
}
그러나 JSON이 중복 키를 허용하는지 여부는 확실하지
않습니다 (JSON 구문이 객체에서 중복 키를 허용합니까? 참조). . npm과 함께 작동하는 것 같습니다.
권장되는 핵은 nodejs 메일 링리스트"//"
에서 키 를 사용 하는 것 입니다. 테스트했을 때 “종속성”섹션에서는 작동하지 않았습니다. 또한 게시물의 예제는 여러 "//"
키를 사용하므로 npm은 키가 중복 된 JSON 파일을 거부하지 않습니다. 즉, 위의 핵은 항상 괜찮습니다.
업데이트 : 중복 키 핵의 단점 중 하나는npm install --save
모든 중복 자동으로 제거 입니다. 불행히도, 그것을 간과하기가 매우 쉽고 의도적 인 의견이 사라졌습니다.
"//"
이 보인다 해킹은 여전히 가장 안전합니다. 그러나 여러 줄 주석도에 의해 제거됩니다 npm install --save
.
답변
재미있는 해킹 아이디어가 있습니다.
예를 들어 package.json에서 주석 분배기로 npm 패키지 이름을 작성 dependencies
하고 devDependencies
차단하십시오.x----x----x
{
"name": "app-name",
"dependencies": {
"x----x----x": "this is the first line of a comment",
"babel-cli": "6.x.x",
"babel-core": "6.x.x",
"x----x----x": "this is the second line of a comment",
"knex": "^0.11.1",
"mocha": "1.20.1",
"x----x----x": "*"
}
}
참고 : *
블록에서 와 같이 유효한 버전으로 마지막 주석 구분선을 추가해야합니다 .