文档 / 语言手册 / 外部标准库
Edit

外部标准库

从 9.0 版本开始

你的 ReScript 项目依赖于作为开发依赖rescript 包,其中包括我们的编译器、构建系统和运行时,例如 Belt。然而,如果你以下面方式发布你的代码,你需要把它移动到 package.json 中的 dependency 中:

  • 发布到 Docker 或其他低存储容量的部署设备

  • 对于那些可能不会在自己的项目中安装 bs-platform 的纯 JS/TS 用户

这些情况下,bs-platform 需要的空间大小可能会带来麻烦,因为它不仅包括我们必要的运行时如 Belt,还包括我们的编译器和构建系统。

为了解决这个问题,我们现在将运行时作为一个独立的包发布在 @rescript/std,其版本与 bs-platform 一致。现在你可以把 bs-platform 作为一个开发依赖,而只将 @rescript/std 作为你的运行时依赖。

这是一个高级特性,请只在上述情况下使用它,如果你已经使用了具有死代码消除功能的 JS 打包器,你可能不需要这个特性。

配置

假设你想发布一个纯 JS 的 ReScript 9.0 库。像这样安装软件包:

SH
npm install bs-platform@9.0.0 --save-dev npm install @rescript/std@9.0.0 --save

然后把这个配置添加到 bsconfig.json 中:

JSON
{ // ... "external-stdlib" : "@rescript/std" }

现在,编译后的 JS 代码将使用 external-stdlib 定义的路径导入。检查 JS 输出:

ReScriptJS output
Belt.Array.forEach([1, 2, 3], num => Js.log(num))

请确保 bs-platform@rescript/std 的版本号在你的 package.json 中一致,以避免由于 stdlib 不匹配而遇到运行时问题。