原文:Rust for JavaScript Developers - Tooling Ecosystem Overview
这是关于向JavaScript开发者介绍Rust语言的系列中的第一部分。
我发现如果用已经知道的东西来解释新的东西,会更容易理解。我想可能会有其他人和我一样 :)
以下是各自的工具链:
安装
Rust是使用rustup命令安装的。rustup类似于Node.js中的nvm。你可以用它来安装和管理Rust的多个版本等等。
Cargo
使用rustup安装Rust也会安装Cargo,类似于安装Node.js也会安装NPM。Cargo是Rust的包管理器,如果你之前用过NPM,会觉得非常熟悉。
Rust的包被称为 “crate”,它们从crate.io注册表下载,类似于NPM包从npmjs.com下载的方式。
NPM虽然主要是一个包管理器,但也可以使用npm脚本功能作为任务运行器。Cargo内置了对运行代码、构建代码等常见任务的支持。Cargo有像工作空间(类似于lerna)、依赖覆盖(类似于patch-package)这样开箱即用的功能。它还是一个测试运行器(类似于mocha、jest等)、基准运行器等。
所以基本上,Cargo就是Rust的NPM。
创建rust项目
通过以下命令创建Rust项目:
|
|
这跟npm init很像,通过以上命令会创建一个 hello_rust的文件夹及以下文件结构:
|
|
Cargo.toml
这是类似package.json的包清单文件。锁定文件(相当于package-lock.json)被命名为Cargo.lock。打开Cargo.toml,你会看到一个熟悉的配置范式:
[package]
name = "hello_rust"
version = "0.1.0"
authors = ["mzhren"]
edition = "2018"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
[package]包含了元数据,如项目名称、作者、关键字等。[dependencies]表类似于package.json中的dependencies对象。Cargo.toml还支持[dev-dependencies],类似于devDependencies。
如果想安装新的依赖包,可以通过手动编辑Cargo.toml文件,在[依赖关系]下添加依赖包,然后运行cargo build来完成的。例如,如果想安装 “serde “包,需要编辑Cargo.toml文件,如下所示:
|
|
然后在cmd运行以下命令:
|
|
ps:我试一了下,crates.io网站的速度慢如老牛。
同样,如果要删除或更新一个依赖关系,我们需要手动编辑Cargo.toml文件,然后运行cargo build。起初我对 cargo install 命令的存在感到困惑,后来发现它相当于 npm install -g。
如果你想要类似于npm install、npm update或npm uninstall,你可以安装 cargo-edit,它可以通过 cargo add、 cargo rm和 cargo upgrade子命令来增强Cargo的功能。
你也可以使用类似NPM的模式来指定依赖版本。
任务运行器
Cargo支持运行常见的任务,比如构建、运行、测试等。但如果你想要一些类似于NPM的脚本,你可以使用make或者 cargo-make。
实时重启服务
Nodemon是Node.js开发中必不可少的工具–它可以观察文件的变化,并自动重启应用程序。Cargo-watch是Rust世界中的等价物。
代码校验和格式化
Rust内置了名为Clippy的linter和名为rustfmt的formatter,它们相当于JS生态系统中的ESLint和Prettier。Precommit钩子可以使用 cargo-husky 来管理。
漏洞检查
扫描依赖关系中的漏洞是用 cargo-audit 来完成的,和 npm 审核非常相似。
感谢您的阅读! :)