2012-03-31 16 views
14

Ho appena installato node.js per Windows ed è stato davvero un gioco da ragazzi farlo funzionare. Vorrei usarlo come parte del mio processo di compilazione di combinare diversi file insieme in questo modo:Come impostare la directory di lavoro per Node.js su Windows?

// settings 
var FILE_ENCODING = 'utf-8', 
    EOL = '\n', 
    DIST_FILE_PATH = 'dist/myAwesomeScript.js'; 

// setup 
var _fs = require('fs'); 

function concat(fileList, distPath) { 
    var out = fileList.map(function(filePath){ 
      return _fs.readFileSync(filePath, FILE_ENCODING); 
     }); 
    _fs.writeFileSync(distPath, out.join(EOL), FILE_ENCODING); 
    console.log(' '+ distPath +' built.'); 
} 

concat([ 
    'foo/bar.js', 
    'foo/lorem.js', 
    'foo/maecennas.js' 
], DIST_FILE_PATH); 

Questo in realtà funziona come un fascino. Tuttavia funziona solo se metto tutti i miei script nella directory nodejs che è C: \ Programmi (x86) \ nodejs e avvii il processo cmd con i diritti di amministratore.

Ma ho bisogno di avere i miei file di progetto in un'altra directory (ad esempio D: \ git \ projectx \) e vorrei poter eseguire: node.exe D: \ git \ projectx \ combine.js. Purtroppo le cose non funzionano in questo modo perché node.exe cercherà i file all'interno della propria directory che è C: \ Programmi (x86) \ nodejs. Ci deve essere via per avviare il processo nodejs e dirgli di usare un'altra directory come directory di lavoro, ho sbagliato?

UPDATE

Come qualcuno ha sottolineato su IRC. La soluzione al mio problema era piuttosto semplice. Solo cd in D:\git\projectx e quindi utilizzare node.exe combine.js. Questo fa in modo che la directory corrente all'interno dei vostri punti di script per D:\git\projectx

Tuttavia, sto accettando la risposta di Luca dal momento che sembra essere anche vero ;-)

risposta

23

È possibile impostare la directory di lavoro corrente utilizzando process.chdir, utilizzando nomi di percorso in stile Unix:

 
process.chdir('/temp/foo'); 

non sono sicuro di come specificare il prefisso di azionamento (D:) però.

+2

è sufficiente aggiungere l'unità alla stringa di directory. 'process.chdir ('c:/users'); process.cwd() ' risultato: ' 'c: \\ users'' –

+0

Come e dove usarlo? Dove dovremmo scrivere esattamente questa linea? L'ho scritto su hit e trial base e non potevo riuscire – Sami

4
process.chdir('D:\\git\\projectx') 
0

realtà è

process.chdir('D:\\\git\\projectx') 
+0

Questo è (quasi) identico alla risposta sopra di esso. – matsjoyce

+0

Beh, in realtà è 'process.chdir ('D: \\ git \\ projectx')' - 2 barre dopo 'D:', non 3 – nponeccop

2

È sempre possibile utilizzare __dirname per rappresentare la directory dello script si è in ...

process.chdir(__dirname); 
Problemi correlati