2

スクリプトの1つへのコマンドライン引数として、ディレクトリへのパスを受け入れています。私がやりたいことが2つあります。1つ目は、パスがディレクトリに渡されたことを確認したいということです。次に実行したいのは、サブディレクトリ名を使用してパスに追加することです(サブディレクトリ名は事前に知っています)。パスが欠落している場合にパスに末尾の文字を自動的に追加する関数がライブラリに/ありますか、またはこれを手動で確認する必要がありますか?

たとえば、/User/local渡された場合はパスに追加する必要がありますが、パスが渡された場合は/bin追加する必要があります。bin/User/local/

助けてくれてありがとう。

4

3 に答える 3

3

path.joinfs.existsSync、およびfs.statSyncが必要なようです

var path = require('path');
var fs = require('fs');

var dir = process.argv[2];

console.log(dir);
console.log(fs.existsSync(dir) && fs.statSync(dir).isDirectory());
console.log(path.join(dir, 'mysubdir'));

したがって、上記のように実行すると、次のようnode test.js /tmpになります。

/tmp
true
/tmp/mysubdir
于 2013-02-13T00:59:29.327 に答える
0
var tail = 'bin/test/',
    path = arg[arg.length-1] === '/' ? arg + tail : arg + '/' + tail;

または私は何かが欠けていますか?:)

于 2013-02-13T00:15:14.540 に答える
0

ロジックを短い関数に入れて、2つの部分の間に「/」が1つだけあることを確認できます。

function appendToPath(orig, add) {
    return orig.replace(/\/$/, "") + "/" + add.replace(/^\//, "");
}

var newPath = appendToPath("/User/local", "bin");

また

var newPath = appendToPath("/User/local/", "/bin");

また

var newPath = appendToPath("/User/local", "/bin");

それらはすべて戻り"/User/local/bin"ます。

于 2013-02-13T01:03:22.190 に答える