在npm安装期间检测node-webkit

时间:2014-11-26 17:06:16

标签: node.js npm node-webkit

我正在为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或其他什么?

3 个答案:

答案 0 :(得分:0)

为了查看你自己的package.json,你可以做这样的事情

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

我希望这会有所帮助。

答案 1 :(得分:0)

我最后编写了一个模块来执行此操作:https://github.com/maxkorp/which-native-nodish(也支持atom-shell和重命名的nw.js)

要点是你从模块的父目录开始,并且只要你是node_modules文件夹的子文件就继续向上,该文件夹是包含package.json的文件夹的子文件夹。进入根级别后,检查package.json中的engines属性是否有atom-shell,node-webkit或nwjs属性。不能保证工作(最远的祖先项目必须指明它是否以这种方式使用节点引擎),但它总比没有好,并且是我见过的唯一开箱即用的解决方案。

答案 2 :(得分:0)

就像这样:

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