2012-03-31 153 views
14

我刚刚为windows安装了node.js,让它运行真的很轻松。我想用它作为我的生成过程的一部分,以几个文件组合在一起,像这样:如何在windows上设置Node.js的工作目录?

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

这确实就像一个魅力。但是,只有将所有脚本放入nodejs目录(它是C:\ Program Files(x86)\ nodejs)并使用管理权限启动cmd进程,它才有效。

但我需要将我的项目文件放在另一个目录中(比如D:\ git \ projectx \),并且希望能够运行:node.exe D:\ git \ projectx \ combine.js。不幸的是,事情并不那么奏效,因为node.exe会查找C:\ Program Files(x86)\ nodejs中的文件。必须要离开来启动nodejs进程并告诉它使用另一个目录作为它的工作目录,我错了吗?

UPDATE

正如有人指出的IRC。解决我的问题很简单。只需cd分成D:\git\projectx然后用node.exe combine.js。这使得它,以便在当前目录你的脚本点里面D:\git\projectx

不过,我接受卢克的回答,因为它似乎也是如此;-)

回答

23

您可以设置使用process.chdir当前工作目录,使用Unix风格的路径名:

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

我不知道如何指定驱动器前缀(D:)虽然。

+2

驱动器只需添加到目录字符串。 'process.chdir('c:/ users'); process.cwd()' 结果: ''c:\\ users'' – 2014-11-18 21:51:18

+0

如何以及在哪里使用它?我们应该在哪里写这行?我将它写在命中和试用版上,并且无法成功 – Sami 2016-05-02 10:26:56

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

其实这是

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

这与(上)中的答案几乎相同。 – matsjoyce 2014-10-23 17:46:56

+0

呃,实际上它是'process.chdir('D:\\ git \\ projectx')' - 在D:后面有2个斜杠,而不是3 – nponeccop 2016-03-01 18:32:57

2

您可以随时使用__dirname代表脚本,你是在目录...

process.chdir(__dirname); 
相关问题