Javascript “Cleaning package.json”;“主要”;需要时使用
我希望保持路径的相对性,并且总是在它前面加上前导目录 假设我有一个字符串Javascript “Cleaning package.json”;“主要”;需要时使用,javascript,node.js,path,require,package.json,Javascript,Node.js,Path,Require,Package.json,我希望保持路径的相对性,并且总是在它前面加上前导目录 假设我有一个字符串hello。参考/hello.js在您的包.main中包含hello是非常有效的。但是,如果您使用hello并需要它,它将查找hellonode\u模块,而不是文件。如何使用path将/作为hello的前缀?问题是package.jsonmain可以有这些有效选项。我不是说这些都指向相同的文件。我是说,hello.js和hello不能直接放入require 。/hello.js /hello.js hello.js 。/h
hello
。参考/hello.js
在您的包.main
中包含hello
是非常有效的。但是,如果您使用hello
并需要它,它将查找hello
node\u模块,而不是文件。如何使用path将/
作为hello
的前缀?问题是package.jsonmain
可以有这些有效选项。我不是说这些都指向相同的文件。我是说,hello.js
和hello
不能直接放入require
。/hello.js
/hello.js
hello.js
。/hello
/hello
hello
path.join
去掉前导路径,因此这不起作用<代码>路径。另一方面,resolve(解析)可以清除所有这些路径,以便与require一起使用,但它会使其成为绝对路径
预期行为:
->相同。/hello.js
->相同/hello.js
->hello.js
/hello.js
->相同。/hello
->相同/hello
->hello
/hello
var pkg = require('./package.json')
// var mainPackage = cleanMain(pkg.main)
// var main = require(mainPackage)
节点中的Require路径仅使用前斜杠
/
,即使在Windows上也是如此,这样就消除了一点复杂性。除此之外,它在node\u modules
中查找和查找路径之间的区别在于它是以
还是/
开头。()clean函数可以是一个简单的正则表达式测试,如下所示:
function clean(s) {
if (!/^[\.\/]/.test(s)) {
s = './' + s;
}
return s;
}
这是有道理的!谢谢