我正在为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
或其他什么?
答案 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");