Npm bin脚本和本地文件读取

时间:2019-10-23 10:48:13

标签: node.js npm command-line-interface

我有一个npm软件包,其中包含bin部分,用于运行cli接口实用程序。此实用程序的从属脚本之一通过fs模块从此软件包目录中读取特定文件。 cli util的定义是:

"bin": { "my_cli_command": "lib/cli.js" }

当我在本地使用npm link和cli命令时,一切正常。 喜欢:

npm link
my_cli_command

但是在将软件包安装到另一个节点应用程序中之后,运行cli命令会导致脚本文件读取出现问题,因为节点会重建bin脚本路径:

npm i --save my_lib
npx my_cli_command

会发生错误,因为my_cli_command读取了本地软件包文件,该文件现在不可用。

是否有一种方法允许npm bin脚本从其自身的程序包中读取文件?

1 个答案:

答案 0 :(得分:0)

问题已解决。 刚开始使用path.resolve方法和__dirname变量来计算文件路径:

let filePath = path.resolve(__dirname, "../files/somefile.txt");

因此该方法将排除对cwd的依赖,并且npm cli应用程序将能够使用其打包文件而不会在本地或在其他项目中安装任何问题。