2015-11-10 14 views
10

Mentre "richiedono" moduli NodeJS non locali, qual è il significato della barra nel nome del modulo?Quando si richiede il pacchetto npm, qual è il significato della barra nel nome del pacchetto?

Esempio:
da ShellJS pagina GitHub del modulo NPM (link: https://github.com/shelljs/shelljs#javascript)

require('shelljs/global');
require('shelljs/make');

Upon guardando la struttura della directory del progetto github ShellJS, noto che entrambe le global.js e make.js sono entrambi allo stesso livello di shell.js che è il punto di ingresso principale del modulo come pe r suo package.json. Che cosa significa la barra nel nome del pacchetto e in che modo, nell'esempio sopra, il percorso per "globale" e "trucco" è stato risolto?

risposta

12

Barra (come uso principale), viene semplicemente utilizzato per i percorsi dei file.

require('shelljs/global') caricherà lo script del file global.js.

require('shelljs/make') caricherà lo script del file make.js.

Tuttavia, require('shelljs') caricherà lo script di shell.js. Perché? Diamo un'occhiata al contenuto di package.json: è "main": "./shell.js" che rende la magia.

+0

Molto interessante !! Ciò significa che possiamo anche fare qualcosa come 'require ('shelljs/scripts/run-tests.js')'? E l'accesso a script come questo può essere bloccato per i tuoi repository personali? – codneto

+0

Non possiamo farlo poiché 'run-tests.js' non è un modulo' CommonJs' (non 'module.exports = ...', quindi non possiamo richiederlo). Ma siamo ancora in grado di accedere ad altri file, ad esempio 'require ('shelljs/src/chmod')'. Non sono sicuro se ci sono modi per limitare l'accesso dall'esterno del pacchetto. – haotang

Problemi correlati