如何获得安装我的npm模块的项目的根目录?

时间:2018-05-26 16:15:29

标签: node.js npm npm-install node-modules

我正在开发一个NPM包。现在我想知道获取利用我的自定义包的项目根目录的最简单方法。

在我的包本身内,很容易在node.js中获取root,如下所示:

__dirname

这指向我的包本身的根。我想获得实际执行我的包npm install的项目的根目录。

显然,我可以简单地从node_modules目录上去,并假设根目录在那里,但这听起来真的很糟糕。

有没有一种标准的方法来实现这一目标?

3 个答案:

答案 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)

你可以使用app-root-path这是一个npm模块而且很漂亮。

/new

之后就去做

npm i -S app-root-path

答案 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