web-dev-qa-db-fra.com

Comment définir le répertoire de travail pour Node.js sur Windows?

Je viens d'installer node.js pour Windows et c'était vraiment un jeu d'enfant de le faire fonctionner. Je voudrais l'utiliser dans le cadre de mon processus de construction pour combiner plusieurs fichiers, comme ceci:

// 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);

Cela fonctionne vraiment comme un charme. Cependant, cela ne fonctionne que si je place tous mes scripts dans le répertoire nodejs qui est C:\Program Files (x86)\nodejs et que je lance le processus cmd avec des droits d'administrateur.

Mais je dois avoir mes fichiers de projet dans un autre répertoire (disons D:\git\projectx \) et j'aimerais pouvoir exécuter: node.exe D:\git\projectx\combine.js. Malheureusement, les choses ne fonctionnent pas de cette façon car node.exe recherchera les fichiers dans son propre répertoire qui est C:\Program Files (x86)\nodejs. Le processus nodejs doit pouvoir être démarré et lui dire d’utiliser un autre répertoire comme répertoire de travail. Je me trompe?

METTRE À JOUR

Comme quelqu'un l'a souligné sur IRC. La solution à mon problème était plutôt simple. Il suffit de cd dans D:\git\projectx et d'utiliser ensuite node.exe combine.js. Cela fait en sorte que le répertoire en cours dans votre script pointe sur D:\git\projectx

Cependant, j'accepte la réponse de Luke car elle semble être aussi vraie ;-)

17
Christoph

Vous pouvez définir le répertoire de travail actuel en utilisant process.chdir , en utilisant des chemins d'accès de type Unix:

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

Je ne sais pas comment spécifier le préfixe de lecteur (D:).

26
Luke Girvin

Vous pouvez toujours utiliser __dirname pour représenter le répertoire du script dans lequel vous vous trouvez ...

process.chdir(__dirname);
5
Tracker1
process.chdir('D:\\git\\projectx')
4
Sooraj P S

En fait c'est

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