gpt4 book ai didi

javascript - 清理 package.json "main"以用于 require

转载 作者:行者123 更新时间:2023-11-30 16:40:02 25 4
gpt4 key购买 nike

我想保持相对路径,并始终在其前面加上前导目录。

假设我有一个字符串hello。在您的 package.main 中引用 ./hello.jshello 是完全有效的。但是,如果您接受 hello 并要求它,它将查找 hello node_module 而不是文件。如何使用路径为 hello 加上 ./ 前缀?问题是 package.json main 可以有这些有效的选项。我并不是说这些都指向相同的文件。我是说 hello.jshello 不能直接放到 require 中。

  • ../hello.js
  • ./hello.js
  • hello.js
  • ../hello
  • ./hello
  • 你好

我怎样才能清理所有这些路径,以便它们与 require 一起工作?

path.join 去掉了前导路径,所以这不起作用。另一方面,path.resolve 确实可以清理所有这些路径以供 require 使用,但它会将其变成绝对路径。

预期行为:

  • ../hello.js -> 相同
  • ./hello.js -> 相同
  • hello.js -> ./hello.js
  • ../hello -> 相同
  • ./hello -> 相同
  • 你好 -> ./hello

我应该只创建一个正则表达式来查看路径吗?我如何确保它可以跨平台工作?

var pkg = require('./package.json')
// var mainPackage = cleanMain(pkg.main)
// var main = require(mainPackage)

最佳答案

要求 Node 中的路径仅使用正斜杠 /,即使在 Windows 上也是如此,这样就消除了一点复杂性。除此之外,它在 node_modules 中查找和查找路径之间的区别在于它是以 . 还是 / 开头。 ( Docs. ) clean 函数可以是一个简单的正则表达式测试,如下所示:

function clean(s) {
if (!/^[\.\/]/.test(s)) {
s = './' + s;
}
return s;
}

关于javascript - 清理 package.json "main"以用于 require,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32146088/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com