我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...

苏南大叔在安装ghost的过程中,遇到了比较奇怪的报错信息,都是和node-pre-gyp有关的。整体来说,这个工具,就是在nodenpm install过程中,会下载并使用提前编译好的二进制文件,来弥补本地环境中某些软件的缺失。例如,安装ghost的时候,需要的sqlite3包。

苏南大叔:node-pre-gyp命令,使用心得体会总结 - node-pre-gyp
node-pre-gyp命令,使用心得体会总结(图4-1)

但是在实际的应用过程中,经常就会发现有些包是并没有提前编译好的,这可能是这个生态环境的缺失吧。错误提示信息,很具有迷惑性,看上去很像是在下载某个特定版本的node,但是事实上并不是,而是在下载这个特定版本的node下,提前编译好的某个软件包。如果没有找到对应的软件包的话,它会自动在本机进行编译。所以,苏南大叔说,并不需要特别关心这些错误。

mac下可能遇到的xcode相关问题

mac系统下,在node-pre-gyp的过程中,提示可能需要xcode,这种类似的提示,似曾相识。如下图所示。

苏南大叔:node-pre-gyp命令,使用心得体会总结 - error
node-pre-gyp命令,使用心得体会总结(图4-2)

tool 'xcodebuild' requires Xcode,but active developer directory 'Library/Developer/CommandLineTools' is a command line tools instance

解决方法也很简单,

sudo xcode-select -switch /Applications/Xcode.app/Contents/Developer

苏南大叔:node-pre-gyp命令,使用心得体会总结 - error_xcode
node-pre-gyp命令,使用心得体会总结(图4-3)

解决完成后,mac下面的node-pre-gyp就能顺利编译了。当然了,如果你电脑上没有xcode的话,可能您就需要费劲去安装一下了。不过江湖上也流传中,不用安装xcode的方式,不过苏南大叔的电脑上,已经安装了xcode,所以无从验证。

node-pre-gyp的等价npm install版本

就编译sqlite3来说,可以使用npm install sqlite3 --build-from-source --save来进行安装。不过实践中,苏南大叔发现,对于--build-from-source参数,cnpm是无感的,就是说,cnpm似乎对于参数--build-from-source并没有做特殊处理。所以,对于这种特殊的应用场景,大家还是使用npm来比较好些。

苏南大叔:node-pre-gyp命令,使用心得体会总结 - npm_install_build_from_source
node-pre-gyp命令,使用心得体会总结(图4-4)

这个--build-from-source参数,存在感不是那么的强烈。所以,也只是特殊环境下用的到罢了。

相关链接

总结

感谢您的阅读,如果您觉得这篇文章有用,欢迎您分享给您的朋友。更多苏南大叔的npm相关文章,请点击这里查看:

如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。

 【福利】 腾讯云最新爆款活动!1核2G云服务器首年50元!

 【源码】本文代码片段及相关软件,请点此获取更多信息

 【绝密】秘籍文章入口,仅传授于有缘之人   node    gyp