Node命令行应用全局包含文件

11 浏览
0 Comments

Node命令行应用全局包含文件

我正在尝试在Node.js中创建一个命令行应用程序。

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

enter image description here

现在,我的用户将使用npm install -g全局安装它,以便在任何项目中使用。

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

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

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

那么,我如何读取命令行应用程序的文件夹/文件?

0
0 Comments

Node命令行应用全局包文件加载的问题是因为根据文档,无法从全局安装的包中加载文件(即使用requireimport)。因此,用户需要在每个仓库中安装您的包才能使用它。解决方法之一是通过操作系统环境变量来解决,但这样会引发其他问题,例如如何为Windows用户和*nix用户设置这些环境变量。

在package.json文件中,可以添加"bin"属性,这样安装您的包的任何人都可以通过"./node_modules/bin/helpers"访问这些文件。如果不使用"bin"路由(或不适用),那么用户可以使用"./node_modules///"的方式来访问文件。也可以尝试使用"//"的方式,但这不能用于全局包。

上述评论使用了path.join,但这并不能解决全局安装包的问题。问题不在于所使用的路径,而是包在最终用户的机器上的位置。使用path.join不会改变任何东西。

0