我正在开发一个NPM包。现在我想知道获取利用我的自定义包的项目根目录的最简单方法。
在我的包本身内,很容易在node.js中获取root,如下所示:
__dirname
这指向我的包本身的根。我想获得实际执行我的包npm install
的项目的根目录。
显然,我可以简单地从node_modules
目录上去,并假设根目录在那里,但这听起来真的很糟糕。
有没有一种标准的方法来实现这一目标?
答案 0 :(得分:1)
您可以使用以下信息:require.main
Module对象表示加载时的入口脚本 Node.js进程已启动。请参阅"访问主模块"。
const path = require('path');
console.log(path.dirname(require.main.filename));
拥有此文件夹结构:
/app
entry.js
node_modules/
my-package/
index.js
应用/ entry.js 强>
const myPackage = require('my-package');
应用/ node_modules /我的封装/ index.js 强>
const path = require('path');
console.log(path.dirname(require.main.filename));
当您致电:node entry.js
您将获得:/app
打印到stdout。
答案 1 :(得分:0)
答案 2 :(得分:0)
吻
const fullPath = path.dirname(require.main.filename);
const regexResp = /^(.*?)node_modules/.exec(fullPath);
const appRoot = regexResp ? regexResp[1] : fullPath;
console.log(appRoot); // outputs the directory which is the root of this project