내 응용 프로그램에서 npm을 통해 deepmerge을 가져오고 있습니다. 환경에는 webpack, babel, typescript, 반응, redux, jest가 포함됩니다.Jest 및 ES2015 가져 오기. jest가 package.json의 pkg.module 선언을 준수하도록하십시오.
Jest가 ES2015 가져 오기 작업을 잘 할 수 있지만 Jest는 deepmerge의 es.js 버전 사용을 거부합니다 (참조 용으로 pkg.module 참조).
간략히 말하자면 deepmerge는 CommonJS 호환 환경 및 RequireJS와 같은 라이브러리에 대해 ES2015 배포본과 다른 배포판을 모두 컴파일하는 rollup 패키지를 사용합니다. 그들은 다음과 같이 deepmerge의 package.json에서 참조 :
"main": "dist/umd.js",
"module": "dist/es.js"
이 방법을 응용 프로그램에 deepmerge 가져올 때, 컴파일러가 실행되는 환경에 따라 올바른 파일을 사용할 수있을만큼 현명해야한다.
이것은 아마도 지나치게 단순화되었지만 요점을 알아야합니다.
이제 내 응용 프로그램이 모든 내용을 올바르게 파싱하고 올바른 버전의 스크립트가 컴파일되고 있습니다 (es.js
). Jest는 잘못된 파일 (umd.js
)을 가져 오기 때문에 테스트가 중단됩니다 (TypeError: deepmerge_1.default is not a function
).
나는 import deepmerge from 'deepmerge';
에 의존하기보다는 import 문에서 올바른 파일의 경로를 지정하는 것과 같은 해결 방법을 발견했습니다. 그러나 패키지의 관리자가 경로, 파일 이름 또는 기타를 변경하기로 결정한 경우에 대비하여 더 나은 미래 보장 방법이 있어야한다고 생각합니다.
아이디어가 있으십니까?
{
"presets": ["env", "react"],
"plugins": [
"react-css-modules"
]
}