ReScript in Korean

External Stdlib

원문

9.0 부터

리스크립트 프로젝트는 devDependencybs-platform (곧 rescript 로 변경) 패키지에 의존합니다. 여기에는 컴파일러와 빌드 시스템 및 Belt 와 같은 런타임이 포함되어 있습니다. 그러나 코드를 배포해야하는 경우 package.jsondependency 로 옮겨야합니다.

  • 도커 또는 저용량 배포 장치를 사용하는 경우
  • 현재 프로젝트에 bs-platform 을 설치하지 않을 순수한 자바스크립트 또는 타입스크립트 사용자의 경우

위의 경우, Belt 와 같은 꼭 필요한 런타임뿐만 아니라 컴파일러 및 빌드 시스템도 포함되므로 bs-platform 의 크기 그리고 존재만으로도 문제가 될 수 있습니다.

이 문제를 해결하기 위해, 런타임을 @rescript/std로 독립적인 패키지로 제공합니다. 해당 버전은 bs-platform의 버전과 같습니다. 그러면 bs-platformdevDependency 로 유지하고 런타임에는 dependency@rescript/std 만 포함시킬 수 있습니다.

고급 기능입니다. 앞에 언급된 상황에서만 사용하세요. 불필요한 코드를 제거하는 자바스크립트의 번들러를 사용하는 경우에 이 기능이 필요 없을 수 있습니다.

설정

자바스크립트 전용 리스크립트 9.0 라이브러리를 배포한다고 가정합니다. 아래와 같이 패키지를 설치하세요.

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

그리고 bsconfig.json 에 다음 코드를 추가하세요:

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

이제 컴파일된 자바스크립트 코드는 external-stdlib 에 정의된 경로를 사용하여 가져옵니다. 자바스크립트 결과를 확인하세요:

Belt.Array.forEach([1, 2, 3], num => Js.log(num))
// Note the require path starting with "@rescript/std".
var Belt_Array = require("@rescript/std/lib/js/belt_Array.js");
Belt_Array.forEach([1, 2, 3], function (num) {
console.log(num);
});

런타임에서 문제가 발생하지 않도록 package.json에서 bs-platform@rescript/std 버전이 같은지 확인 해주세요