节点 path.relative returns 路径不正确
Node path.relative returns incorrect path
我很确定我一定是错的,但在 Node 中,path.relative 似乎输出了错误的目录,或者至少是我没有预料到的目录:
> path.relative('a/file.js', 'a/file.css')
> '../file.css'
但是我希望结果是这样的:
> './file.css'
本质上,我试图计算两个路径的差异,以便一个文件 require
另一个文件和 ../file.css
显然对我的要求是错误的,因为两个文件都在a
目录。输出表明 file.css
在父目录中。
我错过了什么?
据我所知,path.relative()
需要一个文件夹而不是文件作为它的第一个参数。这有效:
path.relative('a', 'a/file.css')
> 'file.css'
这是 path.relative
的源代码:
https://github.com/joyent/node/blob/master/lib/path.js#L504-L530
https://github.com/joyent/node/blob/master/lib/path.js#L265-L304
(注意:如果行号在未来发生变化,这里有一个 link 到我写这篇文章时的来源:https://github.com/nodejs/node-v0.x-archive/blob/94beb2985b4cb25e592a9ccc226f6c824a81e510/lib/path.js)
如您所见,路径由其中的斜杠分开,它只是比较部分的数量,因此如果您传递文件而不是文件夹作为 from
参数。
我很确定我一定是错的,但在 Node 中,path.relative 似乎输出了错误的目录,或者至少是我没有预料到的目录:
> path.relative('a/file.js', 'a/file.css')
> '../file.css'
但是我希望结果是这样的:
> './file.css'
本质上,我试图计算两个路径的差异,以便一个文件 require
另一个文件和 ../file.css
显然对我的要求是错误的,因为两个文件都在a
目录。输出表明 file.css
在父目录中。
我错过了什么?
据我所知,path.relative()
需要一个文件夹而不是文件作为它的第一个参数。这有效:
path.relative('a', 'a/file.css')
> 'file.css'
这是 path.relative
的源代码:
https://github.com/joyent/node/blob/master/lib/path.js#L504-L530
https://github.com/joyent/node/blob/master/lib/path.js#L265-L304
(注意:如果行号在未来发生变化,这里有一个 link 到我写这篇文章时的来源:https://github.com/nodejs/node-v0.x-archive/blob/94beb2985b4cb25e592a9ccc226f6c824a81e510/lib/path.js)
如您所见,路径由其中的斜杠分开,它只是比较部分的数量,因此如果您传递文件而不是文件夹作为 from
参数。