Comment puis-je ajouter des commentaires sur l'emballage.json pour npm install?
J'ai un paquet simple.fichier json et je tiens à ajouter un commentaire. Est-il un moyen de le faire, ou il y a des hacks pour faire ce travail?
{
"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 */
}
}
L'exemple le commentaire ci-dessus ne fonctionne pas comme mnp pauses. J'ai aussi essayé //les commentaires de style.
- double possible de puis-je commenter un fichier JSON?
- Je ne pense pas que c'est un doublon dans que cette question est spécifique à
package.json
fichiers et il y a unpackage.json
réponse spécifique sur la NodeJS liste de diffusion. - L'un des principaux mnp développeurs a refusé afin de tenir compte des commentaires de soutien dans
package.json
. Veuillez formuler des observations sur cette question - peut-être que nous pouvons montrer quelle est l'utilité des commentaires peuvent être. - Une seule balise <le sarcasme />. JSON5 prend en charge les commentaires json5.org
Vous devez vous connecter pour publier un commentaire.
Cela a récemment été discuté dans le node.js liste de diffusion.
Selon Isaac Schlueter qui a créé mnp:
Lors de l'utilisation de vos outils habituels (mnp, fil, etc), plusieurs "//" les clés seront supprimés. Cette survit:
Ce ne survivra pas:
{ "//": "first", "//": "second"}
vous empêche d'utilisernpm version
et d'autre de la ligne de commande utils qui habituellement analyse d'ensemble du JSON et jetez le double des clés dans le processus.package.json
objet. Par exemple{ "dependencies": { "//": "comment?" }}
est pas valide, mais{ "//": "comment!", "dependencies":{}}
est valide."//"
clé et sa valeur d'être écrasées par la suite. est-il possible de disposer, en permanence, des commentaires?//
" clé:npm ERR! code EINVALIDPACKAGENAME
npm ERR! Invalid package name "//": name can only contain URL-friendly characters
Voici un autre hack pour ajouter des commentaires en JSON. Depuis:
Est équivalent à
Vous pouvez faire quelque chose comme:
"express": "makes routing better so I don't want to gouge my eyes out", "express": "3.x"
. Donc, oui, "beurk" comme ColinE dit, et aussi "grâce" comme ColinE dit.package.json
dans un par programme, par exemple pour lanpm version 1.2.3
à la bosse de la version, des entrées redondantes seront supprimés à partir de la résultante JSON.Après perdre une heure sur complexe et hacky solutions que j'ai trouvé à la fois simple et solution valable pour les commentaires de mes encombrants à la section des dépendances dans
package.json
. Juste comme ça:Quand triées de la même façon, il est maintenant très facile pour moi de suivre ces paires de dépendances/commentaires git commit diffs ou dans l'éditeur tout en travaillant avec
package.json
.Et aucun outil supplémentaire impliqué, juste simple et JSON valide.
Espère que cela aide quelqu'un.
"scripts": { "postinstall": "echo postinstall stuff goes here", "help-postinstall": "echo helpful stuff goes here" }
Vous pouvez toujours l'abus de la fait le double des clés sont écrasés. C'est ce que je viens d'écrire:
Cependant, il n'est pas clair si JSON permet dupliqué clés (voir
Ne JSON syntaxe permet la duplication de clés dans un objet?. Il semble fonctionner avec npm, donc je prends le risque.
La recommened hack est d'utiliser
"//"
clés (à partir de la nodejs liste de diffusion). Quand je l'ai testé, il ne fonctionne pas avec des "dépendances" sections, cependant. Aussi, l'exemple de la poste utilise plusieurs"//"
clés, ce qui implique que les mnp ne pas rejeter des fichiers JSON ayant les mêmes touches. En d'autres termes, le hack ci-dessus doivent toujours être fine.Mise à jour: Un ennuyeux inconvénient de la copie de clés hack, c'est que
npm install --save
silencieusement élimine tous les doublons. Malheureusement, il est très facile de l'ignorer et de votre bien-intentionnés, les commentaires sont allés.La
"//"
hack est encore le plus sûr qu'il y paraît. Cependant, les commentaires multi-lignes seront supprimées par l'npm install --save
, trop."//"
hack ne fonctionne pas à l'intérieur de devDependencies. NPM essaie de résoudre un chemin d'accès UNC.mocha
attribut. Seulement, il peut ajouter de plus que l'une d'elle et sera utilisé par les mnp à la fin.NPS (Node Package Scripts) a résolu ce problème pour moi. Vous permet de mettre votre MNP scripts dans un fichier JS, où vous pouvez ajouter des commentaires à gogo et tout autre JS logique vous en avez besoin.
https://www.npmjs.com/package/nps
Échantillon de la
package-scripts.js
de l'un de mes projetsJe viens de faire une installation locale
npm install nps -save-dev
et mettre ça dans mapackage.json
scripts.J'ai une drôle de hack idée.
Créer mnp nom du package convenablement comme commentaire diviseur pour
dependencies
etdevDependencies
bloc dans le paquet.json, par exemplex----x----x
NOTE: il Faut ajouter un dernier commentaire ligne de séparation avec la version valide comme
*
dans le bloc.npm install
(à l'aide de mnp 5) mes doubles de clés ont été automatiquement supprimé 🙁De nombreuses idées intéressantes.
Ce que je fais est-ce:
Cette façon, je peux lire le "pseudo-commentaires" dans le script lui-même, mais aussi d'exécuter quelque chose comme ce qui suit, voir d'une certaine aide dans le terminal:
Mes 2cents pour cette discussion 🙂
Jusqu'à présent, la plupart des "hacks" ici suggèrent à l'abus de JSON. Mais au lieu de cela, pourquoi ne pas abuser de la sous-jacentes langage de script?
Modifier La première réaction a été de mettre la description sur le droit à l'aide
# add comments here
pour l'envelopper; toutefois, cela ne fonctionne pas sur Windows, car les indicateurs (par exemple, mnp exécuter myframework -- --myframework-drapeaux) sera ignoré. J'ai changé ma réponse pour le faire fonctionner sur toutes les plates-formes, et a ajouté quelques tirets pour des raisons de lisibilité.Ce sera:
npm run myframework -- --help
npm run
(qui est la commande à exécuter pour obtenir des renseignements à propos des scripts)package.json
(à l'aide deless
ou votre IDE favori)&&
au lieu de;
donc la première commande devient:"help": "echo 'Display help information (this screen)' && npm run",
scripts
section.package.json
est beaucoup d'autres choses.Voici mon point de vue sur les commentaires dans les
package.json
/bower.json
:J'ai
package.json.js
qui contient un script que les exportations réellespackage.json
. Exécute le script remplace le vieuxpackage.json
et me dit qu'changements qu'il a faits, parfaite pour vous aider à garder la trace des modifications automatiquesnpm
fait. De cette façon, je peux même en programmant définir des paquets que je veux utiliser.La dernière tâche grunt est ici:
https://gist.github.com/MarZab/72fa6b85bc9e71de5991
npm install --save
ou--save-dev
?Inspiré par ce fil, voici ce que nous sommes à l'aide de:
J'ai fini avec un
scripts
comme ça:Mon intention ici n'est pas de préciser une ligne, juste pour avoir une sorte de délimiteurs entre mes scripts pour le backend, frontend, tous, etc.
Je ne suis pas un grand fan de 1a, 1b, 1c, 2a, ..., mais les touches sont différentes et je n'ai pas de problème du tout comme ça.
Comme un double commentaire clés sont supprimées package en cours d'exécution.json outils (mnp, fil, etc) je suis venu à l'aide d'une version hachée qui permet une meilleure lecture de plusieurs lignes, et des touches de
qui est "valable", selon mon IDE que de la racine de la clé, mais à l'intérieur de
dependencies
il se plaint attend à une chaîne de valeur.//
clé de partout, c'est pas vraiment un bon substitut pour les commentaires, surtout quand les commentaires peuvent avoir agréable de la syntaxe avec un éditeur etc.Un autre hack. J'ai créé un script pour lire
package.json
comme contexte pour un guidon de modèle.Code ci-dessous dans le cas où quelqu'un trouve cette approche utile:
guidon fichier de modèle
package-json-comments.hbs
De mon point de vue sur la frustration de pas de commentaires en JSON. - Je créer de nouveaux nœuds, nommé pour les noeuds, ils se réfèrent, mais précédé par un caractère de soulignement. C'est imparfait, mais fonctionnelle.
start_comment
serait mieux, car alors il sera de l'ordre par ordre alphabétiqueComme cette réponse explique,
//
clé a été réservé, de sorte qu'il peut être utilisé classiquement pour les commentaires. Le problème avec//
commentaire, c'est qu'il ne peut pas être utilisé dansdependencies
etdevDependencies
régulière de dépendance avec une chaîne de caractères comme une version contrainte:déclenche une erreur,
Si les touches avec les non-valeurs de chaîne sont considérés comme non valides dépendances et efficacement ignoré:
Une dépendance elle-même peut être commenté de la même manière:
Depuis les dépendances sont classés lors de l'emballage.json est modifiée par NPM, il est impossible de placer un commentaire au-dessus d'une dépendance, il se réfère:
Commentaire clé doit être nommée en conséquence, lorsqu'il se réfère à des de ligne, donc il n'est pas déplacé:
Un commentaire qui est applicable aux dépendance peut être ajouté comme partie de semver:
Avis que si la première partie avant de
OR
ne correspond pas, un commentaire peut être analysé, par exemple,1.x
.Ces solutions sont compatibles avec tous les MNP versions (6 et inférieur).