从包内获取已安装的包根路径
Get installed package root path from within package
我正在构建一个 npm 包,它基本上是一个 CLI 工具。
它旨在 全局安装 并作为 CLI 与 dist/clj.js
一起使用,但也可以作为常规依赖项安装并通过 dist/index.js
.[=19= 访问]
从我的包的 .js
文件内部 (如 dist/cli.js
或 dist/index.js
)我想获得根目录的绝对路径我的包裹(package.json
所在的位置)。
我知道这可以用 __dirname
完成,但对于我项目中的不同文件,它需要不同的操作:
// dist/cli.js
console.log(require('path').join(__dirname, '..'));
// dist/a/b/c/foo.js
console.log(require('path').join(__dirname, '..', '..', '..', '..'));
有没有更好的方法从这个包中的任何 .js
文件获取全局或本地安装包的根目录,而不管这个包在哪个文件夹中使用?
此代码似乎适用于包中的任何文件:
const path = require('path');
let packageRootPath = path.join(path.dirname(require.main.filename), '..');
..
最后需要从 src
/dist
跳转到根目录,因为我所有的 js
文件都位于 src
/dist
forders.
我正在构建一个 npm 包,它基本上是一个 CLI 工具。
它旨在 全局安装 并作为 CLI 与 dist/clj.js
一起使用,但也可以作为常规依赖项安装并通过 dist/index.js
.[=19= 访问]
从我的包的 .js
文件内部 (如 dist/cli.js
或 dist/index.js
)我想获得根目录的绝对路径我的包裹(package.json
所在的位置)。
我知道这可以用 __dirname
完成,但对于我项目中的不同文件,它需要不同的操作:
// dist/cli.js
console.log(require('path').join(__dirname, '..'));
// dist/a/b/c/foo.js
console.log(require('path').join(__dirname, '..', '..', '..', '..'));
有没有更好的方法从这个包中的任何 .js
文件获取全局或本地安装包的根目录,而不管这个包在哪个文件夹中使用?
此代码似乎适用于包中的任何文件:
const path = require('path');
let packageRootPath = path.join(path.dirname(require.main.filename), '..');
..
最后需要从 src
/dist
跳转到根目录,因为我所有的 js
文件都位于 src
/dist
forders.