¿Cómo agrego comentarios a package.json para la instalación de npm?

Resuelto Will Shaver asked hace 11 años • 24 respuestas

Tengo un archivo package.json simple y quiero agregar un comentario. ¿Hay alguna manera de hacer esto o hay algún truco para que esto funcione?

{
  "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 */
  }
}

El comentario de ejemplo anterior no funciona cuando npm se rompe. También probé // comentarios de estilo.

Will Shaver avatar Jan 09 '13 01:01 Will Shaver
Aceptado

Esto se ha discutido recientemente en la lista de correo de Node.js.

Según Isaac Schlueter, quien creó npm:

... npm nunca utilizará la clave "//" para ningún propósito y está reservada para comentarios... Si desea utilizar un comentario de varias líneas, puede utilizar una matriz o varios "//" llaves.

Al utilizar sus herramientas habituales (npm, hilo, etc.), "//"se eliminarán varias claves. Esto sobrevive:

{ "//": [
  "first line",
  "second line" ] }

Esto no sobrevivirá:

{ "//": "this is the first line of a comment",
  "//": "this is the second line of the comment" }

Hay que tener en cuenta que "//"sólo se puede utilizar en la raíz del package.jsonobjeto. Por ejemplo

{ 
  "//": "comment!", 
  "dependencies": {...}
} 

es válido pero

{ 
  "dependencies": { 
     "//": "comment?" 
  }
}

es inválido .

-- @david_p comentario

Igor Soarez avatar Jan 08 '2013 18:01 Igor Soarez

Después de perder una hora en soluciones complejas y hacky, encontré una solución simple y válida para comentar mi sección de dependencias voluminosas en package.json. Así como esto:

{
  "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"
  }
}

Cuando se ordenan de la misma manera, ahora me resulta muy fácil rastrear estos pares de dependencias/comentarios ya sea en Git commit diffs o en un editor mientras trabajo con file package.json.

Y no se necesitan herramientas adicionales, solo JSON simple y válido.

gkond avatar Aug 22 '2017 10:08 gkond

DESCARGO DE RESPONSABILIDAD: probablemente no deberías utilizar este truco. Vea los comentarios a continuación.


Aquí hay otro truco para agregar comentarios en JSON. Desde:

{"a": 1, "a": 2}

Es equivalente a

{"a": 2}

Puedes hacer algo como:

{
  "devDependencies": "'mocha' not needed as should be globally installed",
  "devDependencies" :  {
    "should": "*"
  }
}
Jonathan Warden avatar Aug 04 '2013 22:08 Jonathan Warden

He estado haciendo esto:

{
  ...
  "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",
  }
  ...
}

De esta manera, puedo leer los "pseudocomentarios" en el script y también ejecutar algo como lo siguiente para ver algún tipo de ayuda en la terminal:

npm run about
npm run about:watch

Aún mejor si estás usando yarn.

yarn about:clean

Además, como señaló @Dakota Jang en los comentarios, puedes usar claves como //somethingpara dejar aún más claro que se trata de un comentario.
Al igual que:

{
  ...
  "scripts": {
    "//clean": "echo 'Say something about the clean script'",
    "clean": "do something",
    "//build": "echo 'Say something about building it'",
    "build": "do something",
    "//watch": "echo 'Say something about how watch works'",
    "watch": "do something",
  }
  ...
}

Y luego ejecuta:

npm run //build
# or
yarn //build

Y tendrá una salida auxiliar en su terminal y también un "comentario" en su paquete.json.

Felipe N Moura avatar Jun 15 '2018 14:06 Felipe N Moura