首页 > 解决方案 > 在 NPM 中查找依赖项的根目录

问题描述

假设我已经安装awesome-packageinside my-app,假设结构如下所示:

my-app/
  node_modules/
    awesome-package/
      node_modules/
        another-package/
          static/
            index.js
      dist/
        index.js
  dist/
    index.js

my-app/index.js我在里面require('awesome-package')。现在我想获取的根目录awesome-package,所以我基本上fs.readFileSync可以从another-package

如何获取脚本的根目录?

标签: node.js

解决方案


我认为require.resolve可以用来实现这一点。它将为您提供模块的完整路径。从中获取根目录应该很容易。

const path = require('path');
let loc = require.resolve('awesome-package');

// most likely something like the following depends on the package
// /path/to/my-app/node_modules/awesome-package/static/index.js
console.log(loc);

// something like the following will give you the root directory
// of the package
console.log(path.join(
  loc.substring(0,a.lastIndexOf('node_modules')),
  'node_modules',
  'awesome-package'
));

推荐阅读