J'ai un simple fichier package.json et je veux ajouter un commentaire. Existe-t-il un moyen de le faire, ou existe-t-il des hacks pour que cela fonctionne?
{
"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 de commentaire ci-dessus ne fonctionne pas lors des interruptions npm. J'ai également essayé des commentaires de style //.
package.json
fichiers et qu'il existe unepackage.json
réponse spécifique sur la liste de diffusion NodeJS.package.json
. Veuillez commenter cette question - nous pourrons peut-être montrer à quel point les commentaires peuvent être utiles.Réponses:
Cela a récemment été discuté dans la liste de diffusion Node.js .
Selon Isaac Schlueter qui a créé npm:
Lorsque vous utilisez vos outils habituels (npm, fil, etc.), plusieurs clés "//" seront supprimées. Cela survit:
Cela ne survivra pas:
la source
{ "//": "first", "//": "second"}
vous empêche d'utilisernpm version
et d'autres utilitaires de ligne de commande qui analysent généralement le JSON entier et suppriment les clés en double en cours.package.json
objet. Par exemple,{ "dependencies": { "//": "comment?" }}
n'est pas valide mais{ "//": "comment!", "dependencies":{}}
est valide."//"
clé et sa valeur finissent par s'effacer. existe-t-il un moyen d'avoir des commentaires permanents?Voici un autre hack pour ajouter des commentaires en JSON. Depuis:
Est équivalent à
Vous pouvez faire quelque chose comme:
la source
"express": "makes routing better so I don't want to gouge my eyes out", "express": "3.x"
. Donc, oui, "beurk" comme le dit ColinE, et aussi "merci" comme le dit ColinE.package.json
de manière programmatique, par exemple ennpm version 1.2.3
augmentant la version - les entrées redondantes seront supprimées du JSON résultant.Après avoir perdu une heure sur des solutions complexes et hacky, j'ai trouvé une solution à la fois simple et valide pour commenter ma section sur les dépendances encombrantes
package.json
. Juste comme ça:Lorsqu'ils sont triés de la même manière, il est maintenant très facile pour moi de suivre ces paires de dépendances / commentaires dans les différences de validation git ou dans l'éditeur tout en travaillant avec
package.json
.Et aucun outil supplémentaire n'est impliqué, juste un JSON simple et valide.
J'espère que cela aide n'importe qui.
la source
"scripts": { "postinstall": "echo postinstall stuff goes here", "help-postinstall": "echo helpful stuff goes here" }
Beaucoup d'idées intéressantes.
Ce que je fais, c'est ceci:
De cette façon, je peux à la fois lire les "pseudo-commentaires" dans le script lui-même, et également exécuter quelque chose comme ce qui suit, pour voir une sorte d'aide dans le terminal:
Mes 2cents pour cette discussion :)
la source
NPS (Node Package Scripts) a résolu ce problème pour moi. Vous permet de placer vos scripts NPM dans un fichier JS distinct, où vous pouvez ajouter de nombreux commentaires et toute autre logique JS dont vous avez besoin. https://www.npmjs.com/package/nps
Échantillon de l'
package-scripts.js
un de mes projetsJe viens de faire une installation locale
npm install nps -save-dev
et de mettre cela dans mespackage.json
scripts.la source
Vous pouvez toujours abuser du fait que les clés dupliquées sont écrasées. Voici ce que je viens d'écrire:
Cependant, il n'est pas clair si JSON autorise les clés en double (voir La syntaxe JSON autorise-t - elle les clés en double dans un objet?. Cela semble fonctionner avec npm, donc je prends le risque.
Le hack recommandé est d'utiliser des
"//"
clés (de la liste de diffusion nodejs ). Quand je l'ai testé, cela ne fonctionnait pas avec les sections "dépendances". En outre, l'exemple de la publication utilise plusieurs"//"
clés, ce qui implique que npm ne rejette pas les fichiers JSON avec des clés dupliquées. En d'autres termes, le hack ci-dessus devrait toujours être correct.Mise à jour: Un inconvénient ennuyeux du hack de clé dupliqué est qu'il
npm install --save
élimine silencieusement tous les doublons. Malheureusement, il est très facile de l'oublier et vos commentaires bien intentionnés ont disparu.Le
"//"
hack est toujours le plus sûr qu'il n'y paraît. Cependant, les commentaires sur plusieurs lignes seront également supprimés parnpm install --save
.la source
"//"
hack ne fonctionne pas dans devDependencies. NPM essaie de résoudre un chemin UNC.mocha
attribut Il peut simplement en ajouter plusieurs et sera utilisé par npm à la fin.J'ai une drôle d'idée de hack.
Créez le nom du package npm de manière appropriée comme diviseur de commentaires pour
dependencies
etdevDependencies
bloquez dans package.json, par exemplex----x----x
REMARQUE : Doit ajouter la dernière ligne de séparation des commentaires avec une version valide comme
*
dans le bloc.la source
npm install
(en utilisant npm 5) mes clés en double ont été automatiquement supprimées :(Inspiré par ce fil, voici ce que nous utilisons :
la source
Jusqu'à présent, la plupart des "hacks" suggèrent ici d'abuser de JSON. Mais au lieu de cela, pourquoi ne pas abuser du langage de script sous-jacent?
Modifier La réponse initiale consistait à mettre la description à droite en utilisant
# add comments here
pour la boucler; cependant, cela ne fonctionne pas sous Windows, car les indicateurs (par exemple, npm exécutent myframework - --myframework-flags) seraient ignorés. J'ai changé ma réponse pour la faire fonctionner sur toutes les plates-formes, et ajouté quelques retraits à des fins de lisibilité.Cette volonté:
npm run myframework -- --help
npm run
(qui est la commande réelle à exécuter pour obtenir des informations sur les scripts disponibles)package.json
(en utilisantless
ou votre IDE préféré)la source
&&
au lieu de,;
donc la première commande devient:"help": "echo 'Display help information (this screen)' && npm run",
scripts
section.package.json
c'est beaucoup d'autres choses.Voici mon point de vue sur les commentaires dans
package.json
/bower.json
:J'ai
package.json.js
qui contient un script qui exporte le réelpackage.json
. L'exécution du script écrase l'ancienpackage.json
et me dit quelles modifications il a apportées, parfait pour vous aider à garder une trace des modifications automatiques apportéesnpm
. De cette façon, je peux même définir par programme les packages que je veux utiliser.La dernière tâche de grognement est ici: https://gist.github.com/MarZab/72fa6b85bc9e71de5991
la source
npm install --save
ou--save-dev
?Je me suis retrouvé avec un
scripts
comme ça:Mon intention ici n'est pas de clarifier une ligne, juste d'avoir des délimiteurs entre mes scripts pour le backend, le frontend, tout, etc.
Je ne suis pas un grand fan de 1a, 1b, 1c, 2a, ... mais les touches sont différentes et je n'ai aucun problème du tout comme ça.
la source
Comme l' explique cette réponse , la
//
clé était réservée, elle peut donc être utilisée de manière conventionnelle pour les commentaires. Le problème avec le//
commentaire est qu'il ne peut pas être utilisé dansdependencies
et endevDependencies
tant que dépendance régulière avec une chaîne comme contrainte de version:déclenche une erreur,
Bien que les clés avec des valeurs non-chaîne soient considérées comme des dépendances non valides et efficacement ignorées:
Une dépendance elle-même peut être commentée de la même manière:
Étant donné que les dépendances sont triées lorsque package.json est modifié par NPM, il est impossible de placer un commentaire au-dessus d'une dépendance à laquelle il fait référence:
La clé de commentaire doit être nommée en conséquence si elle fait référence à une ligne spécifique, elle ne sera donc pas déplacée:
Un commentaire applicable à une dépendance spécifique peut être ajouté dans le cadre de semver:
Notez que si la première partie précédente
OR
ne correspond pas, un commentaire peut être analysé, par exemple1.x
.Ces solutions de contournement sont compatibles avec toutes les versions actuelles de NPM (6 et inférieures).
la source
Comme la plupart des développeurs connaissent la documentation basée sur les balises / annotations, la convention que j'ai commencé à utiliser est similaire. Voici un avant-goût:
Note: Pour les
dependencies
,devDependencies
, etc sections, les annotations de commentaires ne peut pas être ajouté directement au- dessus des dépendances de package individuels à l' intérieur de l'objet de configuration depuisnpm
s'attend à la clé d'être le nom d'un paquet NPM. D'où la raison de la@comment dependencies
.Remarque: Dans certains contextes, comme dans l'objet scripts, certains éditeurs / IDE peuvent se plaindre du tableau. Dans le contexte des scripts, VS Code attend une chaîne pour la valeur - pas un tableau.
J'aime la manière d'annotation / style de balise d'ajouter des commentaires à JSON parce que le
@
symbole se démarque des déclarations normales.la source
Pour résumer toutes ces réponses:
Ajoutez un seul champ de niveau supérieur appelé
//
qui contient une chaîne de commentaire. Cela fonctionne mais ça craint parce que vous ne pouvez pas mettre des commentaires près de la chose qu'ils commentent.Ajoutez plusieurs champs de niveau supérieur commençant par
//
, par exemple,//dependencies
qui contiennent une chaîne de commentaire. C'est mieux, mais cela ne vous permet toujours de faire des commentaires de haut niveau. Vous ne pouvez pas commenter les dépendances individuelles.Ajoutez des
echo
commandes à votrescripts
. Cela fonctionne mais ça craint parce que vous ne pouvez l'utiliser que dansscripts
.Ces solutions sont également toutes peu lisibles. Ils ajoutent une tonne de bruit visuel et les IDE ne les mettent pas en surbrillance en tant que commentaires.
Je pense que la seule solution raisonnable est de générer le à
package.json
partir d'un autre fichier. Le moyen le plus simple est d'écrire votre JSON en Javascript et d'utiliser Node pour l'écrirepackage.json
. Enregistrez ce fichier souspackage.json.mjs
,chmod +x
il, puis vous pouvez simplement l'exécuter pour générer votrepackage.json
.Il utilise la
//
clé pour avertir les gens de ne pas le modifier.\x40generated
est délibéré. Il se transforme en@generated
inpackage.json
et signifie que certains systèmes de révision de code réduisent ce fichier par défaut.C'est une étape supplémentaire dans votre système de construction, mais elle bat tous les autres hacks ici.
la source
Comme les clés de commentaires en double sont supprimées en exécutant les outils package.json (npm, fil, etc.), j'en suis venu à utiliser une version hachée qui permet une meilleure lecture sous forme de plusieurs lignes et clés comme
qui est «valide» selon mon IDE en tant que clé racine, mais en
dependencies
son sein se plaint d'attendre une valeur de chaîne.la source
//
clé partout, ce n'est pas vraiment un bon substitut pour les commentaires, surtout quand les commentaires peuvent avoir une belle coloration syntaxique avec un éditeur etc.Un autre hack. J'ai créé un script à lire
package.json
comme contexte pour un modèle de guidon.Code ci-dessous au cas où quelqu'un trouverait cette approche utile:
fichier de modèle de guidon
package-json-comments.hbs
la source
Pour npm package.json ont trouvé 2 façons (après avoir lu cette conversation):
Mais avec la mise à jour ou la réinstallation du paquet avec "--save" ou "--save-dev, commentez comme" ^ 4.1.0! commentaire "à l'endroit correspondant sera supprimé. Et tout cela cassera l'audit npm.
la source
del-comment
etenvify-comment
?Mon point de vue sur la frustration de l'absence de commentaires dans JSON. Je crée de nouveaux nœuds, nommés d'après les nœuds auxquels ils se réfèrent, mais préfixés par des traits de soulignement. C'est imparfait, mais fonctionnel.
la source
start_comment
serait mieux, car alors il ordonnera par ordre alphabétique