如何从节点包库内部需要根项目目录中的某些内容?

Jef*_*gga 3 javascript node.js node-modules

我想创建一个节点包模块,但我很难要求根项目目录中的文件在我创建的节点包模块中使用。

如果我有这样的目录结构

- node_modules
  - library_name
    - lib
      - index.js
    - bin
      - run.sh
-  config.js
Run Code Online (Sandbox Code Playgroud)

如果调用了 run.sh,它将运行 index.js。在index.js中,如何解析根目录,稍后我可以在index.js中要求config.js?

Est*_*ask 5

二进制包可以显式接受配置路径作为参数。

如果包二进制文件不作为 NPM 脚本运行,则它不应依赖于父项目结构。

如果包二进制文件通过 NPM 脚本运行:

"scripts": {
  "foo": "library_name"
}
Run Code Online (Sandbox Code Playgroud)

这会将当前工作目录设置为项目根目录,因此可能需要如下:

const config = require(path.join(process.cwd(), 'config'));
Run Code Online (Sandbox Code Playgroud)

两种方法可以结合起来;这通常用于向第三方 CLI(Mocha 等)提供默认位置的配置文件。