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

Subtract one absolute path from another in Node.js

本文关键字:路径 一个 另一个 js Node      更新时间:2023-09-26

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

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

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

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

是否有一个模块可以根据所有必要的 URL 规则执行此操作,或者我是否最好使用一些简单的字符串操作?

不确定"根据所有必要的 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)
'../..'

您可以使用正则表达式轻松做到这一点:

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

这样,您可以强制它位于第二条路径的开头(使用 ^ ),如果它不是完全匹配,它不会被擦除。

您的示例是:

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

它应该返回:foo/foo.js