npm安装期间如何检测node-webkit

4
我正在为node.js开发一个库,该库主要是作为本地模块构建的。因此,当人们尝试在node-webkit项目中包含它时,他们必须使用nw-gyp而不是node-gyp重新编译它。我知道我们可以在代码运行时使用类似以下内容来特别检测node-webkit:
``` try { isNodeWebkit = (typeof require('nw.gui') !== "undefined"); } catch(e) { isNodeWebkit = false; } ```
但是,我想在我们的安装脚本(由npm install运行)中检测这个。或者,我们可以查看自己的package.json,但是也许有一种方法可以查看根项目的package.json吗?那么,我们至少可以查看某些属性,例如engine或其他内容。

但是其中没有显示引擎是node-webkit的迹象。也许你可以解析package.json文件以找到根索引文件,然后解析该索引文件中提到的.js脚本,并查看是否引用了nw、gui? - Timothy Ha
3个回答

0

就这么简单:

isNodeWebkit = (typeof process == "object");

0

为了查看自己的 package.json 文件,可以执行以下操作:

gui = require(nw.gui); 
myPackageJSONFile = gui.App.manifest; // this will get the package.json file

希望这能有所帮助。


0

我最终编写了一个模块来完成这个任务:https://github.com/maxkorp/which-native-nodish(还支持atom-shell和已更名的nw.js)

要点是,你从模块的父目录开始,只要你是node_modules文件夹的子文件夹,而该文件夹又是一个包含package.json的文件夹的子文件夹,就一直向上走。到达根级别后,在package.json中检查engines属性是否有atom-shell、node-webkit或nwjs属性。虽然不能保证100%有效(最远的祖先项目必须以这种方式指定是否使用node-ish引擎),但它比没有好,而且这是我见过的唯一开箱即用的解决方案。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接