node.js - 使用 brew 全局安装 npm 包
问题描述
我想发布一个使用 NodeJs 开发的 CLI 工具,我正在尝试使用 yum 而不是使用 npm 全局安装它,因为我不希望用户要求安装 Nodejs 和 npm。不知道该怎么做?
代替
npm install -g my-cli-tool
和
brew install my-cli-tool
所以用户不必安装 NodeJs 和 Npm。需要将整个 Nodejs 运行时环境 + 我的包打包为 Brew 包。
解决方案
您需要自己编写自制公式。我会根据您的需要提供一些有用的资源。
阅读公式作者文档的节点,尤其是最后的公式示例。
列出
node
用作依赖项的类似公式。使用这些现有公式作为参考。brew uses node # check one of them, like this "cash-cli" brew edit cash-cli
这是一个例子
require "language/node"
class CashCli < Formula
desc "Convert currency rates directly from your terminal"
homepage "https://github.com/xxczaki/cash-cli"
url "https://registry.npmjs.org/cash-cli/-/cash-cli-4.0.0.tgz"
sha256 "c8b1d437305bc4c492cb9b85bb1b91edb5cc74fa91bd007616746c6258dae6c5"
bottle do
cellar :any_skip_relocation
sha256 "c78661062dbc6e913d0f69f45af80af1f9967e50fe1eca86a95337ab16fac7ea" => :mojave
sha256 "6b8215de6daf01c61e48bd46465be7ad9b400d4ec5ab514f5167bee787d6fa48" => :high_sierra
sha256 "5941317cef9b92097c4b45df1e94b7b8d08e708d9813508ab3f42f55068541d3" => :sierra
end
depends_on "node"
def install
system "npm", "install", *Language::Node.std_npm_install_args(libexec)
bin.install_symlink Dir["#{libexec}/bin/*"]
end
test do
assert_match "Conversion of USD 100", shell_output("#{bin}/cash 100 USD PLN CHF")
end
end
该bottle
部分应在自定义公式中删除。
最后,维护一个水龙头并从该水龙头安装您的公式。
推荐阅读
- javascript - 结合对象数组的特定属性
- azure-devops - 在 azure 管道 yaml 中获取合并的分支名称
- reactjs - 如何在具有 ReactJs 代码的 Wildfly 中配置静态 index.html
- matlab - 以下 .sh 脚本是否有资格被并行处理?
- javascript - ReactJS - 仅在 ComponentDidMount 之后调用函数一次
- firebase - Flutter 将多张图片上传到 Firebase
- android - 当应用程序从前台被杀死时在 Ionic 应用程序中显示通知
- java - 如何从 RecyclerView Android 中的编辑文本中获取价值
- flutter - 在 Flutter 中重新实例化 Provider 创建的类
- swift - 我的代码中出现 Pthread 终止错误,不知道为什么。// swift