使用 NodeJS 访问 cli 全局文件
Accessing cli global files with NodeJS
我正在开发一个可以在本地或全局安装的 CLI 模块。它引用要在 CLI 过程中使用的本地模板(例如,将其中一些模板复制到当前文件夹中,...)。
如何检索这些模板的安装路径(在当前 node_modules
文件夹或全局 npm/yarn node_modules
文件夹中)以使用它们?
所以场景是用户通过 npm install
安装您的工具,然后该工具将一些模板(从您的项目文件夹)复制到用户当前工作目录(以及其他内容)中。
因此您的模板文件可能安装在本地 node_modules
安装或全局安装中。
在这两种情况下,您都可以通过脚本文件的相对路径访问资源的绝对路径,via the path module:
const pathToResource = path.resolve('../templates/myTemplate.txt');
pathToResource
将是绝对路径,并且会从一些用户更改为其他用户,具体取决于他们在本地或全局安装模块。
我不知道这是否是最佳解决方案,但我通过执行以下操作设法检索了二进制路径:path.resolve(require.resolve('my-cli'), '../', 'templates')
来源:https://github.com/nodejs/help/issues/388#issuecomment-264731257
我正在开发一个可以在本地或全局安装的 CLI 模块。它引用要在 CLI 过程中使用的本地模板(例如,将其中一些模板复制到当前文件夹中,...)。
如何检索这些模板的安装路径(在当前 node_modules
文件夹或全局 npm/yarn node_modules
文件夹中)以使用它们?
所以场景是用户通过 npm install
安装您的工具,然后该工具将一些模板(从您的项目文件夹)复制到用户当前工作目录(以及其他内容)中。
因此您的模板文件可能安装在本地 node_modules
安装或全局安装中。
在这两种情况下,您都可以通过脚本文件的相对路径访问资源的绝对路径,via the path module:
const pathToResource = path.resolve('../templates/myTemplate.txt');
pathToResource
将是绝对路径,并且会从一些用户更改为其他用户,具体取决于他们在本地或全局安装模块。
我不知道这是否是最佳解决方案,但我通过执行以下操作设法检索了二进制路径:path.resolve(require.resolve('my-cli'), '../', 'templates')
来源:https://github.com/nodejs/help/issues/388#issuecomment-264731257