2013-09-02 20 views
16

provo ad installare pacchetto espresso utilizzando NPM da dentro/home/Iwan/my-directory project:NPM Installa pacchetto Fuori directory corrente

npm install express 

[email protected] ../node_modules/express 
├── [email protected] 
├── [email protected] 
├── [email protected] 
├── [email protected] 
├── [email protected] 
├── [email protected] 
├── [email protected] 
├── [email protected] ([email protected]) 
└── [email protected] ([email protected]) 

La cosa strana è NPM non installa pacchetto espresso in directory corrente (/ home/iwan/my-project/node_modules/express), ma in/home/iwan/node_modules/express.

Mi sono perso qualcosa?

risposta

47

Se la directory node_modules non esiste nella directory corrente, NPM la cercherà nelle directory superiori finché non la trova. Quindi, se la directory genitrice ha una directory node_modules, NPM assumerà che è dove installare i moduli.

Un modo rapido per creare una directory vuota node_modules in cui si desidera posizionare i moduli.

+0

Ah, grazie @Brad. Adesso è chiaro. –

+1

In realtà sono venuto da Google per cercare un comportamento opposto, quindi non devo assolutamente andare 'cd ..' prima dell'installazione. La soluzione è stata di nuovo - proprio come afferma questa risposta - per creare 'node_modules' nella directory genitore. –

+0

No, questo non funziona. Se installo 'npm install --save redux' è installato nella cartella il mio prompt dei comandi è (creando la cartella' node_modules'), e non ha controllato le cartelle 'node_modules' che si trovavano nella directory padre. –

2

Credo che il modo migliore per installare pacchetti con npm consiste nel creare un file package.json. In questo modo, inseriscilo nella directory smae come app. Un esempio di file package.json potrebbe assomigliare a questo:

{ 
    "name": "application-name", 
    "version": "0.0.1", 
    "private": true, 
    "scripts": { 
    "start": "node app.js" 
    }, 
    "dependencies": { 
    "express": "3.3.5", 
    "jade": "*", 
    "less-middleware": "*", 
    "ejs": "*", 
    "mongoose": "3.6.*" 
    } 
} 

Date un'occhiata alla lista delle dipendenze. Basta aggiungere il modulo che si desidera, ad esempio, underscore. Basta aggiungerlo alle dipendenze. In questo modo:

{ 
    "name": "application-name", 
    "version": "0.0.1", 
    "private": true, 
    "scripts": { 
    "start": "node app.js" 
    }, 
    "dependencies": { 
    "express": "3.3.5", 
    "jade": "*", 
    "less-middleware": "*", 
    "ejs": "*", 
    "mongoose": "3.6.*", 
    "underscore": "*" <-------------- Added 
    } 
} 

Poi verso la directory di testa e basta eseguire npm install, e bam! Tutti i pacchetti e le loro dipendenze verranno installati per te. Farà tutto il lavoro, e questo significa fare la tua cartella node_modules per te. Ecco come il mio cartella app assomiglia:

enter image description here

+0

Ottimo! Grazie. package.json rende l'app più chiara e informativa. –

+0

@KurniawanJunaidy Se ha funzionato per te, si prega di upvotare e accettare la risposta. –

+1

Si prega di non utilizzare questo esempio. Se stai usando * per i tuoi pacchetti in produzione, alla fine ti imbatterai in cambiamenti irrisori e passerai troppo tempo a risolverli. Se sei in sviluppo attivo e vuoi essere sicuro che i tuoi pacchetti siano aggiornati, usa asterischi, tilde o carote, ma non lasciarli in produzione. – SgtPooki

0

Si potrebbe anche creare un file package.json vuoto utilizzando le linee guida dalla pagina web https://docs.npmjs.com/files/package.json. Quindi inserire questo nella cartella del progetto e digitare npm install.

Problemi correlati