2017-04-03 117 views
1

我正在为基于cli的工具编写一个NPM模块。有人安装软件包后,我需要阅读他们的package.json文件。我知道如何在语法中读取文件。我的问题是,我如何一致地检索package.json文件,并且应该使用相对路径还是绝对路径。NPM模块 - 如何利用package.json文件?

因此,在安装后,我的代码将某处驻留在node_modules文件夹中:

package.json // I need to require this file 
node_modules/ 
    ↳ my-package/ 
    ↳ dist/ 
     ↳ my-package.js // the actual file running the code 

任何建议/最佳做法?或者它只是使用正确的文件路径的问题?

+1

一般来说,我已经看到了它做的方式是在当前的工作目录看(即其中CLI命令正在运行) - 你可以使用['process.cwd()'](https://nodejs.org/api/process.html#process_process_cwd) t目录的路径。如果在CWD中没有package.json,我还看到不少工具会继续搜索文件夹结构,因为这意味着您可以从项目的子文件夹运行该命令,它仍然可以工作。 –

+0

太棒了!感谢您的反馈!下面的答案更具信息性,但了解您的解决方案很有用 – Nicky

回答

2

读的package.json文件是很容易的,因为你可以简单地要求它:

var package = require('./path/to/package.json'); 

找到正确的路径是什么不是那么简单。

这是一个相当普遍的任务,没有简单的方法来实现核心模块,但在npm上很少有模块可以帮助你。

发现包-JSON:

轻松找到的package.json,你要搜索的文件。它spiders package.json文件的父目录并正确读取结果。它遵循ES6迭代器设计,因此它应该很容易实现。

父包JSON:

使用父包,JSON,你可以找到父的package.json,让使用您的模块的模块的package.json。

查找和读取包JSON:

查找并从的package.json文件中读取数据。

参见:

相关问题