我有一个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脚本从其自身的程序包中读取文件?
答案 0 :(得分:0)
问题已解决。
刚开始使用path.resolve
方法和__dirname
变量来计算文件路径:
let filePath = path.resolve(__dirname, "../files/somefile.txt");
因此该方法将排除对cwd
的依赖,并且npm cli应用程序将能够使用其打包文件而不会在本地或在其他项目中安装任何问题。