Saya punya file package.json yang sederhana dan saya ingin menambahkan komentar. Apakah ada cara untuk melakukan ini, atau apakah ada peretasan untuk membuat ini berfungsi?
{
"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 */
}
}
Contoh komentar di atas tidak berfungsi sebagai npm break. Saya juga sudah mencoba // style comment.
package.json
file dan adapackage.json
jawaban spesifik pada milis NodeJS.package.json
. Silakan mengomentari masalah itu - mungkin kita dapat menunjukkan seberapa bermanfaat komentar tersebut.Jawaban:
Ini baru-baru ini dibahas di milis node.js .
Menurut Isaac Schlueter yang menciptakan npm:
Saat menggunakan alat Anda yang biasa (npm, benang, dll) beberapa "//" kunci akan dihapus. Ini bertahan:
Ini tidak akan bertahan:
sumber
{ "//": "first", "//": "second"}
mencegah Anda menggunakannpm version
dan utilitas baris perintah lainnya yang biasanya mem-reparse seluruh JSON dan membuang kunci duplikat dalam proses.package.json
objek. Misalnya{ "dependencies": { "//": "comment?" }}
tidak valid tetapi{ "//": "comment!", "dependencies":{}}
valid."//"
kunci dan nilainya akhirnya bisa dihapus. apakah ada cara untuk memiliki komentar permanen?Berikut ini hack lain untuk menambahkan komentar di JSON. Sejak:
Setara dengan
Anda dapat melakukan sesuatu seperti:
sumber
"express": "makes routing better so I don't want to gouge my eyes out", "express": "3.x"
. Jadi, ya, "huek" seperti kata ColinE, dan juga "terima kasih" seperti kata ColinE.package.json
dalam cara yang terprogram, katakan dengannpm version 1.2.3
menabrak versi - entri yang berlebihan akan dihapus dari JSON yang dihasilkan.Setelah menghabiskan satu jam pada solusi kompleks dan hacky, saya telah menemukan solusi sederhana dan valid untuk mengomentari bagian dependensi besar saya di
package.json
. Seperti ini:Ketika disortir dengan cara yang sama, sekarang sangat mudah bagi saya untuk melacak pasangan dependensi / komentar ini baik di git commit diffs atau di editor saat bekerja dengan
package.json
.Dan tidak ada alat tambahan yang terlibat, JSON sederhana dan valid.
Semoga ini bisa membantu siapa saja.
sumber
"scripts": { "postinstall": "echo postinstall stuff goes here", "help-postinstall": "echo helpful stuff goes here" }
Banyak ide menarik.
Apa yang saya lakukan adalah ini:
Dengan cara ini saya bisa membaca "pseudo-comments" dalam skrip itu sendiri, DAN juga menjalankan sesuatu seperti berikut, untuk melihat beberapa jenis bantuan di terminal:
2 sen saya untuk diskusi ini :)
sumber
NPS (Node Package Scripts) menyelesaikan masalah ini untuk saya. Memungkinkan Anda menempatkan skrip NPM ke file JS yang terpisah, tempat Anda dapat menambahkan banyak komentar dan logika JS lainnya yang Anda perlukan. https://www.npmjs.com/package/nps
Contoh
package-scripts.js
dari salah satu proyek sayaSaya baru saja menginstal lokal
npm install nps -save-dev
dan meletakkannya dipackage.json
skrip saya .sumber
Anda selalu dapat menyalahgunakan fakta bahwa kunci duplikat ditimpa. Inilah yang baru saja saya tulis:
Namun, tidak jelas apakah JSON mengizinkan kunci duplikat (lihat Apakah sintaks JSON memungkinkan kunci duplikat dalam suatu objek? Tampaknya berfungsi dengan npm, jadi saya mengambil risiko.
Peretasan yang disarankan adalah menggunakan
"//"
kunci (dari milis nodejs ). Ketika saya mengujinya, itu tidak bekerja dengan bagian "dependensi". Juga, contoh dalam posting menggunakan banyak"//"
kunci, yang menyiratkan bahwa npm tidak menolak file JSON dengan kunci duplikat. Dengan kata lain, retasan di atas harus selalu baik-baik saja.Pembaruan: Salah satu kelemahan menjengkelkan dari peretasan kunci duplikat adalah itu
npm install --save
diam diam menghilangkan semua duplikat. Sayangnya, sangat mudah untuk mengabaikannya dan komentar Anda yang bermaksud baik hilang.The
"//"
hack masih paling aman seperti yang tampak. Namun, komentar multi-baris juga akan dihapusnpm install --save
.sumber
"//"
hack tidak bekerja di dalam devDependencies. NPM mencoba menyelesaikan jalur UNC.mocha
atribut. Hanya dapat menambahkan lebih dari satu dan akan digunakan oleh npm pada akhirnya.Saya punya ide hack yang lucu.
Buat nama paket npm yang sesuai sebagai pembagi komentar
dependencies
dandevDependencies
blokir di package.json, misalnyax----x----x
CATATAN : Harus menambahkan baris pembagi komentar terakhir dengan versi yang valid seperti
*
di blokir.sumber
npm install
Senang tentang jawaban ini tetapi setelah saya berlari (menggunakan npm 5) kunci duplikat saya secara otomatis dihapus :(Terinspirasi oleh utas ini, inilah yang kami gunakan :
sumber
Sejauh ini, sebagian besar "peretasan" di sini menyarankan untuk menyalahgunakan JSON. Namun, mengapa tidak menyalahgunakan bahasa skrip yang mendasarinya?
Sunting Respons awal menempatkan deskripsi di sebelah kanan gunakan
# add comments here
untuk membungkusnya; namun, ini tidak berfungsi pada Windows, karena flag (mis. npm menjalankan myframework - --myframework-flags) akan diabaikan. Saya mengubah respons saya untuk membuatnya berfungsi di semua platform, dan menambahkan beberapa indentasi untuk tujuan keterbacaan.Ini akan:
npm run myframework -- --help
npm run
(yang merupakan perintah aktual untuk menjalankan untuk mendapatkan informasi tentang skrip yang tersedia)package.json
(menggunakanless
atau IDE favorit Anda)sumber
&&
alih-alih;
demikian perintah pertama menjadi:"help": "echo 'Display help information (this screen)' && npm run",
scripts
bagian ini.package.json
Ada banyak hal lain.Inilah komentar saya di dalam
package.json
/bower.json
:Saya punya
package.json.js
yang berisi skrip yang mengekspor yang sebenarnyapackage.json
. Menjalankan skrip menimpa yang lamapackage.json
dan memberi tahu saya perubahan apa yang dibuatnya, sempurna untuk membantu Anda melacak perubahan otomatisnpm
dibuat. Dengan begitu saya bahkan dapat secara program menentukan paket apa yang ingin saya gunakan.Tugas kasar terbaru ada di sini: https://gist.github.com/MarZab/72fa6b85bc9e71de5991
sumber
npm install --save
atau--save-dev
?Saya berakhir dengan
scripts
seperti itu:Maksud saya di sini bukan untuk memperjelas satu baris, hanya untuk memiliki semacam pembatas antara skrip saya untuk backend, frontend, semua, dll.
Saya bukan penggemar berat 1a, 1b, 1c, 2a, ... tapi kuncinya berbeda dan saya tidak punya masalah sama sekali seperti itu.
sumber
Saat jawaban ini menjelaskan,
//
kunci dicadangkan, sehingga dapat digunakan secara konvensional untuk komentar. Masalah dengan//
komentar adalah bahwa itu tidak dapat digunakan dalamdependencies
dandevDependencies
sebagai ketergantungan reguler dengan string sebagai batasan versi:memicu kesalahan,
Meskipun kunci dengan nilai non-string dianggap dependensi tidak valid dan diabaikan secara efisien:
Ketergantungan itu sendiri dapat dikomentari dengan cara yang sama:
Karena dependensi diurutkan ketika package.json dimodifikasi oleh NPM, tidak praktis untuk menempatkan komentar di atas dependensi yang dimaksud:
Kunci komentar harus dinamai sesuai jika mengacu pada baris tertentu, sehingga tidak akan dipindahkan:
Sebuah komentar yang berlaku untuk ketergantungan khusus dapat ditambahkan sebagai bagian dari semver:
Perhatikan bahwa jika bagian pertama sebelumnya
OR
tidak cocok, komentar dapat diuraikan, misalnya1.x
.Penanganan masalah ini kompatibel dengan semua versi NPM saat ini (6 dan lebih rendah).
sumber
Karena sebagian besar pengembang akrab dengan dokumentasi berbasis tag / anotasi, konvensi yang sudah mulai saya gunakan adalah serupa. Berikut ini rasanya:
Catatan: Untuk bagian
dependencies
,,devDependencies
dll., Anotasi komentar tidak dapat ditambahkan langsung di atas dependensi paket individual di dalam objek konfigurasi karenanpm
mengharapkan kunci untuk menjadi nama paket npm. Karenanya alasan untuk@comment dependencies
.Catatan: Dalam konteks tertentu, seperti dalam objek skrip, beberapa editor / IDE mungkin mengeluh tentang array. Dalam konteks skrip, VS Code mengharapkan string untuk nilai - bukan array.
Saya suka cara penjelasan / gaya tag menambahkan komentar ke JSON karena
@
simbol menonjol dari deklarasi normal.sumber
Untuk merangkum semua jawaban ini:
Tambahkan bidang tingkat atas tunggal yang disebut
//
yang berisi string komentar. Ini berfungsi tetapi menyebalkan karena Anda tidak dapat memberikan komentar di dekat hal yang mereka komentari.Tambahkan beberapa bidang tingkat atas yang dimulai dengan
//
, misalnya//dependencies
yang berisi string komentar. Ini lebih baik tetapi masih hanya memungkinkan Anda untuk membuat komentar tingkat atas. Anda tidak dapat berkomentar ketergantungan individu.Tambahkan
echo
perintah kescripts
. Ini berfungsi tetapi menyebalkan karena Anda hanya dapat menggunakannya dalamscripts
.Semua solusi ini juga tidak terlalu mudah dibaca. Mereka menambahkan satu ton kebisingan visual dan IDE tidak akan menyorotnya sebagai komentar.
Saya pikir satu-satunya solusi yang masuk akal adalah menghasilkan
package.json
dari file lain. Cara paling sederhana adalah menulis JSON sebagai Javascript dan menggunakan Node untuk menulisnyapackage.json
. Simpan file ini sebagaipackage.json.mjs
,chmod +x
itu, dan kemudian Anda bisa menjalankannya untuk menghasilkanpackage.json
.Itu menggunakan
//
kunci untuk memperingatkan orang dari mengeditnya.\x40generated
disengaja. Itu berubah menjadi@generated
dipackage.json
dan berarti beberapa sistem kode review akan runtuh file yang secara default.Ini adalah langkah ekstra dalam sistem build Anda, tetapi ini mengalahkan semua peretasan lainnya di sini.
sumber
Karena kunci komentar duplikat dihapus menjalankan alat package.json (npm, benang, dll) saya menggunakan versi hash yang memungkinkan untuk membaca lebih baik karena banyak baris dan kunci seperti
yang 'valid' menurut IDE saya sebagai kunci root, tetapi di
dependencies
dalamnya mengeluh mengharapkan nilai string.sumber
//
kuncinya di mana-mana, itu bukan pengganti yang baik untuk komentar, terutama ketika komentar dapat memiliki sintaksis yang bagus dengan editor dll.Peretasan lagi. Saya membuat skrip untuk dibaca
package.json
sebagai konteks untuk template setang.Kode di bawah ini dalam kasus seseorang menemukan pendekatan ini berguna:
file template setang
package-json-comments.hbs
sumber
Untuk npm package.json telah menemukan 2 cara (setelah membaca percakapan ini):
Tetapi dengan pembaruan atau instal ulang paket dengan "--save" atau "--save-dev, komentar seperti" ^ 4.1.0! komentar "di tempat yang sesuai akan dihapus. Dan semua ini akan merusak audit npm.
sumber
del-comment
danenvify-comment
?Saya mengambil frustrasi tidak ada komentar di JSON. Saya membuat node baru, dinamai untuk node yang mereka rujuk, tetapi diawali dengan garis bawah. Ini tidak sempurna, tetapi fungsional.
sumber
start_comment
akan lebih baik, karena dengan begitu ia akan memesan sesuai abjad