npm install 之 gRPC

我们这里探讨一下如何在npm install阶段,修改并编译的过程。其中涉及到一些npm的命令,一并解释和学习了。使用案例就是编译grpc。

在npm install grpc的时候会触发在package.json(grpc中的)文件中定义的scripts:

 "scripts": {
    "build": "node-pre-gyp build",
    "coverage": "istanbul cover ./node_modules/.bin/_mocha test",
    "electron-build": "node-pre-gyp configure build --runtime=electron --disturl=https://atom.io/download/atom-shell",
    "install": "node-pre-gyp install --fallback-to-build --library=static_library"
  }

根据npm-scripts的说明,其在打包之后会调用scripts中定义的install方法。

Tips:npm默认的install script:"install": "node-gyp rebuild"。如果项目中有binding.gyp文件,而project并没有定义任何的install和preinstall脚本,则会默认install指令使用node-gyp进行编译。
使用--ignore-scripts,则会让npm避免执行package.json文件中的scripts脚本。而只进行打包。也就是并不进行node-pre-gyp的编译环节(针对c++源码和node的配置-binding.grp)

所以我们大体上的思路应该是:

  1. 先安装grpc,并不进行编译:npm install grpc --ignore-scripts
  2. 进入node_modules目录。进入grpc的项目。修改相关源码文件:c++源码在deps/grpc/src/core/lib中。
  3. 重新build grpc:npm run-script install grpc --fallback-to-build --library=static_library 或者 npm rebuild。区别在于rebuild用的是build脚本,其会重新的编译一遍c++的组件。
  4. 再安装其他的组件。

这里要注意一点:如果其他的组件也应用grpc,请注意保持版本的一致性。否则不会生效,他们最自己用自己的grpc版本。

或者

  1. 安装组件,非脚本安装:npm install --ignore-scripts
  2. 修改源码
  3. rebuild:npm rebuild --unsafe-perm --build-from-source

使用--unsafe-perm是避免一些root用户的消息。

如果的全局安装,可以使用npm root -g找到安装路径。

参考链接

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • npm是什么 NPM的全称是Node Package Manager,是随同NodeJS一起安装的包管理和分发工具...
    build1024阅读 8,217评论 0赞 9
  • Node 开发离不开 npm,而脚本功能是 npm 最强大、最常用的功能之一。 本文介绍如何使用 npm 脚本(n...
    邓海琪阅读 5,744评论 0赞 0
  • 什么是 NPM npm之于Node,就像pip之于Python,gem之于Ruby,composer之于PHP。 ...
    ihoey阅读 6,426评论 2赞 36
  • 最近需要将一个c++编写的功能模块部署到Node服务上,所以研究了一下node-gyp。整个过程中遇到不少坑,下面...
    ltryee阅读 8,561评论 0赞 3
  • 所谓的假期不一定要远行 往往期待发生之前更让人欣喜 就这样很平淡的过了一段时光 每天睡到自然醒,准备喜欢的食材,安...
    佐啦阅读 273评论 0赞 0

友情链接更多精彩内容