节点命令行应用程序全局包含文件

Node command-line application global include file

我正在尝试在 Node.js

中创建一个命令行应用程序

我有以下文件夹结构(可能不正确)

现在我的用户将使用 npm install -g 在全球范围内安装它,这样它就可以在任何项目中使用。

在我的代码 (index.js) 中,我有以下行:

fs.readFile('./helpers/tailwind.css', (err,css)=>{
    
})

问题是当我的用户 运行 它找不到文件,因为它试图在用户使用命令行应用程序的目录中找到该文件。

那么我如何从命令行应用程序读取数据folders/files?

无法从全局安装的包中加载文件(又名使用 requireimportaccording to the docs - (as well as per this answer),因此您的用户需要在每个 repo 的基础上安装您的包.

话虽如此,您 may be able to accomplish this via OS env vars,但随后您 运行 遇到了不同的问题。比如你如何为 Windows 上的用户和 *nix 上的用户设置这些环境变量?

在您的 package.json 文件中,您可以添加一个 "bin" 道具,以便安装您的软件包的任何人都可以通过 "./node_modules/bin/helpers" 访问这些文件。 See here for more info

如果你不关心走 "bin" 路线(或者如果它不适用)那么你总是可以让你的用户做类似 "./node_modules/<your_package_name>/<some_dir>/<some.file>" 的事情(替换路径中必要的名称) .. 您 可能 也可以摆脱 "<your_package_name>/<some_dir>/<some.file>" 之类的东西,但是同样,这不能与全局包一起使用。