Node.js 使用NodeJS访问cli全局文件

Node.js 使用NodeJS访问cli全局文件,node.js,npm,yarnpkg,Node.js,Npm,Yarnpkg,我正在开发一个CLI模块,可以在本地或全局安装。它引用CLI过程中使用的本地模板(例如,将其中一些模板复制到当前文件夹中,…) 如何检索这些模板的安装路径(在当前的node\u modules文件夹或全局npm/warnnode\u modules文件夹中)以使用它们?因此,场景是用户通过npm install安装您的工具,然后该工具将一些模板(从项目文件夹)复制到用户当前的工作目录(以及其他内容) 因此,您的模板文件可以安装在本地节点\u modules安装或全局安装中 在这两种情况下,您都可

我正在开发一个CLI模块,可以在本地或全局安装。它引用CLI过程中使用的本地模板(例如,将其中一些模板复制到当前文件夹中,…)


如何检索这些模板的安装路径(在当前的
node\u modules
文件夹或全局npm/warn
node\u modules
文件夹中)以使用它们?

因此,场景是用户通过
npm install
安装您的工具,然后该工具将一些模板(从项目文件夹)复制到用户当前的工作目录(以及其他内容)

因此,您的模板文件可以安装在本地
节点\u modules
安装或全局安装中

在这两种情况下,您都可以从脚本文件访问给定相对路径的资源的绝对路径:


pathToResource
将是绝对路径,并将从一些用户更改为其他用户,具体取决于他们在本地或全局安装了模块

我不知道这是否是最好的解决方案,但我通过执行以下操作来检索二进制路径:
path.resolve(require.resolve('my-cli')、'..'、'templates')


来源:

我不清楚你到底想要什么。这些本地模板是在运行时由cli创建的?或者确实存在于您的项目中?它们是项目的一部分,并与二进制文件一起存储,以缓解[Thread]和[yarnpkg]周围的标记混淆。
resolve
返回工作目录的绝对路径,而不是二进制文件的安装路径。我错过什么了吗?
const pathToResource = path.resolve('../templates/myTemplate.txt');