在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