9.0 부터
리스크립트 프로젝트는 devDependency
인 bs-platform
(곧 rescript
로 변경) 패키지에 의존합니다. 여기에는 컴파일러와 빌드 시스템 및 Belt
와 같은 런타임이 포함되어 있습니다. 그러나 코드를 배포해야하는 경우 package.json
의 dependency
로 옮겨야합니다.
- 도커 또는 저용량 배포 장치를 사용하는 경우
- 현재 프로젝트에
bs-platform
을 설치하지 않을 순수한 자바스크립트 또는 타입스크립트 사용자의 경우
위의 경우, Belt
와 같은 꼭 필요한 런타임뿐만 아니라 컴파일러 및 빌드 시스템도 포함되므로 bs-platform
의 크기 그리고 존재만으로도 문제가 될 수 있습니다.
이 문제를 해결하기 위해, 런타임을 @rescript/std
로 독립적인 패키지로 제공합니다. 해당 버전은 bs-platform
의 버전과 같습니다. 그러면 bs-platform
을 devDependency
로 유지하고 런타임에는 dependency
로 @rescript/std
만 포함시킬 수 있습니다.
고급 기능입니다. 앞에 언급된 상황에서만 사용하세요. 불필요한 코드를 제거하는 자바스크립트의 번들러를 사용하는 경우에 이 기능이 필요 없을 수 있습니다.
설정
자바스크립트 전용 리스크립트 9.0 라이브러리를 배포한다고 가정합니다. 아래와 같이 패키지를 설치하세요.
npm install bs-platform@9.0.0 --save-devnpm 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
버전이 같은지 확인 해주세요