在Node.js中从另一个绝对path中减去另一个绝对path

我在Node.js中有两条path,例如:

var pathOne = '/var/www/example.com/scripts'; var pathTwo = '/var/www/example.com/scripts/foo/foo.js'; 

如何从另一条path中减去一条path以获得相对path?

 subtractPath(pathTwo, pathOne); // => 'foo/foo.js' 

有没有一个模块,根据所有必要的URL规则做到这一点,还是我最好使用一些简单的string操作?

不知道“根据所有必要的URL规则”是什么意思,但似乎你应该能够只使用path.relative ;

 > var pathOne = '/var/www/example.com/scripts'; > var pathTwo = '/var/www/example.com/scripts/foo/foo.js'; > path.relative(pathOne, pathTwo) 'foo/foo.js' > path.relative(pathTwo, pathOne) '../..' 

你可以用一个正则expression式轻松地做到这一点:

 var pathOne = /^\/your\/path\// var pathTwo = '/your/path/appendix'.replace(pathOne, ''); 

这样,你可以强制它在第二个path的开始处(使用^ ),如果它不是完全匹配,它将不会被擦除。

你的例子是:

 var pathOne = /^\/var\/www\/example.com\/scripts\//; var pathTwo = '/var/www/example.com/scripts/foo/foo.js'.replace(pathOne, ''); 

它应该返回: foo/foo.js