C’è un modo per creare automaticamente il file package.json per i progetti Node.js

Package.json dovrebbe essere modificato manualmente? Non è ansible che un programma come npm guardi solo i file, vedi le istruzioni “require” e poi lo usi per inserire le voci necessarie nel file package.json? Ci sono programmi del genere?

Il file package.json viene utilizzato da npm per informazioni sul progetto node.js.

Usa npm init per generare file package.json per te!

Viene fornito in bundle con npm. Leggi la sua documentazione qui: https://docs.npmjs.com/cli/init

Inoltre, c’è uno strumento che puoi utilizzare nei tuoi progetti per generare questo file a livello di codice (è realizzato dal produttore di npm): https://github.com/isaacs/init-package-json

Prima di tutto, corri

 npm init 

… ti farò alcune domande ( leggi prima questo ) sul tuo progetto / pacchetto e poi genererai un file package.json per te.

Quindi, una volta che hai un file package.json, usa

 npm install  --save 

o

 npm install  --save-dev 

… per installare una dipendenza e aggiungerla automaticamente all’elenco delle dependencies package.json .

(Nota: potrebbe essere necessario modificare manualmente gli intervalli di versione per le dipendenze.)

Ho appena scritto un semplice script per raccogliere le dipendenze in ./node_modules. Adempie al mio requisito al momento. Questo può aiutare altri, lo postano qui.

 var fs = require("fs"); function main() { fs.readdir("./node_modules", function (err, dirs) { if (err) { console.log(err); return; } dirs.forEach(function(dir){ if (dir.indexOf(".") !== 0) { var packageJsonFile = "./node_modules/" + dir + "/package.json"; if (fs.existsSync(packageJsonFile)) { fs.readFile(packageJsonFile, function (err, data) { if (err) { console.log(err); } else { var json = JSON.parse(data); console.log('"'+json.name+'": "' + json.version + '",'); } }); } } }); }); } main(); 

Nel mio caso, lo script sopra riportato produce:

 "colors": "0.6.0-1", "commander": "1.0.5", "htmlparser": "1.7.6", "optimist": "0.3.5", "progress": "0.1.0", "request": "2.11.4", "soupselect": "0.2.0", // Remember: remove the comma character in the last line. 

Ora puoi copiarli e incollarli. Divertiti!

npm init

per creare il file package.json e quindi si utilizza

ls node_modules/ |xargs npm install --save

per compilare i moduli presenti nella cartella node_modules.

Modifica: @paldepind ha sottolineato che il secondo comando è ridondante perché npm init ora aggiunge automaticamente quello che hai nella tua node_modules / cartella. Non so se questo è sempre stato il caso, ma ora almeno, funziona senza il secondo comando.

Riga di comando :

 npm init 

creerà il file package.json

Per installare, aggiornare e disinstallare i pacchetti sotto dipendenze nel file package.json:

Riga di comando :

 npm install @* --save 

aggiungerà automaticamente la versione più recente per il pacchetto sotto dipendenze nel file package.json

EX:

 npm install [email protected]* --save 

Riga di comando :

 npm install  --save 

inoltre aggiungerà automaticamente la versione più recente per il pacchetto sotto dipendenze nel file package.json

se hai bisogno di una versione specifica per un pacchetto usa questa riga di comando :

 npm install @ --save 

aggiungerà automaticamente una versione specifica del pacchetto sotto dipendenze nel file package.json

EX:

 npm install [email protected] --save 

se hai bisogno di un intervallo specifico di versione per un pacchetto usa questa riga di comando :

 npm install @ 

aggiungerà automaticamente la versione più recente per il pacchetto tra il range della versione sotto dipendenze nel file package.json

EX:

 npm install [email protected]">1.0.0 <1.2.0" --save 

Per maggiori dettagli su come scrivere la versione per il pacchetto npm Doc

Riga di comando :

 npm update --save 

aggiornerà i pacchetti nel file package.json e aggiungerà automaticamente la versione aggiornata per tutti i pacchetti sotto dipendenze nel file package.json

Riga di comando :

 npm uninstall  --save 

rimuoverà automaticamente il pacchetto dalle dipendenze nel file package.json e rimuoverà il pacchetto dalla cartella node_module

L’esecuzione di npm init -y rende il package.json con tutti i valori predefiniti.
È quindi ansible modificare package.json conseguenza
Ciò consente di risparmiare tempo molte volte impedendo di premere enter su ogni comando in npm init

Ora puoi utilizzare Yeoman – Modern Web App Scaffolding Tool sul terminale di nodo con 3 semplici passaggi.

Innanzitutto, devi installare yo e altri strumenti richiesti:

 $ npm install -g yo bower grunt-cli gulp 

Per impalcare un’applicazione web, installa il generatore generatore-webapp :

 $ npm install -g generator-webapp // create scaffolding 

Corri e … hai finito:

 $ yo webapp // create scaffolding 

Yeoman può scrivere il codice boilerplate per l’intera applicazione Web o controller e modelli. Può aprire un server Web di anteprima dal vivo per le modifiche e la compilazione; non solo che puoi anche eseguire i tuoi test unitari, minimizzare e concatenare il tuo codice, ottimizzare le immagini e altro …

Yeoman (yo) – strumento di ponteggio che offre un ecosistema di scaffold specifici per il framework, chiamati generatori, che possono essere utilizzati per eseguire alcuni dei compiti noiosi menzionati in precedenza.

Grunt / gulp : usato per build, visualizzare in anteprima e testare il tuo progetto.

Bower – viene utilizzato per la gestione delle dipendenze, quindi non è più necessario scaricare manualmente le librerie front-end.

In base alla risposta di Pylinux, di seguito è riportata una soluzione per il sistema operativo Windows,

 dir node_modules > abc.txt FOR /F %k in (abc.txt) DO npm install --save 

Spero che sia d’aiuto.

usa il comando npm init -f per generare il file package.json e poi usa –save dopo ogni comando in modo che ogni modulo venga automaticamente aggiornato all’interno del tuo pacchetto.json per ex: npm install express –save

1. Scelta

Se git e GitHub user:

generate-package più semplicemente di npm init .

altro

e / o non ti piace il modello package.json , che generate-package o npm init genera:

puoi generare il tuo modello tramite app per scaffold come generate , vele o yeoman .


2. Rilevanza

Questa risposta è rilevante per marzo 2018. In futuro, i dati di questa risposta potrebbero essere obsoleti.

Autore di questa risposta personalmente utilizzato generare-pacchetto a marzo 2018.


3. Limitazioni

È necessario utilizzare git e GitHub per l’utilizzo di generate-package.


4. Dimostrazione

Ad esempio, creo la cartella vuota sasha-npm-init-vs-generate-package .

4.1. generare pacchetto

Comando:

 D:\SashaDemoRepositories\sasha-npm-init-vs-generate-package>gen package [16:58:52] starting generate [16:59:01] √ running tasks: [ 'package' ] [16:59:04] starting package ? Project description? generate-package demo ? Author's name? Sasha Chernykh ? Author's URL? https://vk.com/hair_in_the_wind [17:00:19] finished package √ 1m 

package.json :

 { "name": "sasha-npm-init-vs-generate-package", "description": "generate-package demo", "version": "0.1.0", "homepage": "https://github.com/Kristinita/sasha-npm-init-vs-generate-package", "author": "Sasha Chernykh (https://vk.com/hair_in_the_wind)", "repository": "Kristinita/sasha-npm-init-vs-generate-package", "bugs": { "url": "https://github.com/Kristinita/sasha-npm-init-vs-generate-package/issues" }, "license": "MIT", "engines": { "node": ">=4" }, "scripts": { "test": "mocha" }, "keywords": [ "generate", "init", "npm", "package", "sasha", "vs" ] } 

4.2. npm init

 D:\SashaDemoRepositories\sasha-npm-init-vs-generate-package>npm init This utility will walk you through creating a package.json file. It only covers the most common items, and tries to guess sensible defaults. See `npm help json` for definitive documentation on these fields and exactly what they do. Use `npm install ` afterwards to install a package and save it as a dependency in the package.json file. Press ^C at any time to quit. package name: (sasha-npm-init-vs-generate-package) version: (1.0.0) 0.1.0 description: npm init demo entry point: (index.js) test command: mocha git repository: https://github.com/Kristinita/sasha-npm-init-vs-generate-package keywords: generate, package, npm, package, sasha, vs author: Sasha Chernykh license: (ISC) MIT About to write to D:\SashaDemoRepositories\sasha-npm-init-vs-generate-package\package.json: { "name": "sasha-npm-init-vs-generate-package", "version": "0.1.0", "description": "npm init demo", "main": "index.js", "scripts": { "test": "mocha" }, "repository": { "type": "git", "url": "git+https://github.com/Kristinita/sasha-npm-init-vs-generate-package.git" }, "keywords": [ "generate", "package", "npm", "package", "sasha", "vs" ], "author": "Sasha Chernykh", "license": "MIT", "bugs": { "url": "https://github.com/Kristinita/sasha-npm-init-vs-generate-package/issues" }, "homepage": "https://github.com/Kristinita/sasha-npm-init-vs-generate-package#readme" } Is this ok? (yes) y 
 { "name": "sasha-npm-init-vs-generate-package", "version": "0.1.0", "description": "npm init demo", "main": "index.js", "scripts": { "test": "mocha" }, "repository": { "type": "git", "url": "git+https://github.com/Kristinita/sasha-npm-init-vs-generate-package.git" }, "keywords": [ "generate", "package", "npm", "package", "sasha", "vs" ], "author": "Sasha Chernykh", "license": "MIT", "bugs": { "url": "https://github.com/Kristinita/sasha-npm-init-vs-generate-package/issues" }, "homepage": "https://github.com/Kristinita/sasha-npm-init-vs-generate-package#readme" } 

Penso, che generate-package più semplicemente, che npm init .


5. Personalizzazione

Che crei il tuo modello package.json , vedi esempi di generare e yeoman .