사선첨단, 제1부분
7082 단어 nodenpmjavascript
말.
이 문장에서: 실에 대한 힌트와'당신은 알고 있습니까'(특히 실 2), 매일 업데이트⬇
14:2020년 8월 31일 오후 37시
32
108
이 일련의 글은 이 단서를 통해 매번 5개의 추문을 통해 그것들을 깊이 연구하여 추문이 허용하는 것보다 더 많은 정보를 제공할 것이다.만약 네가 이런 기교가 매우 재미있다고 생각한다면, 나를 따라 실과 그 배후 개발에 관한 더 많은 지식을 배우는 것을 잊지 마라😃
1.node_모듈 링크기
말.
일.✌️ Yarn 2는 node_모듈 프로젝트를 잘 처리할 수 있습니다.사실, 우리의 테스트 세트는 우리의 n\m 연결기가 Yarn1보다 더 안정적임을 증명했다!필요한 경우에만 PnP 사용🙂 yarnpkg.com/configuration/…
14:2020년 8월 31일 오후 37시
사.
십구
클릭하여 더 알아보기!
흥미로운 것은 일부 사람들이 우리의 버그 추적기에서 문제 보고서를 열었다는 것이다. "내가 설치를 실행할 때 Yarn이 node\u 모듈을 생성하지 않아서 좀 이상하다!"그리고 나서 우리는 그들에게 여전히 그들의 프로그램을 실행해 보라고 요구했다. 봐라, 그것은 성공했다.이것은 Yarn2가 기본적으로 새로운 설치 정책을 사용했기 때문입니다Plug'n'Play.
하지만 꽂아쓰기가 모두에게 절대적인 것은 아니다.일부 오래된 항목은 그것과 호환되지 않고, 다른 항목은 이전에 존재했던 오류가 드러나 의존항 보고서가 부족한 형식으로 나타나는 것을 발견한다.
일반 사용자로서 우리는 반드시 이 모든 문제를 처리해야 하는 것은 아니기 때문에 Yarn은 여전히 양호한 구
node_modules
전략을 채택했다.Just one setting to set, 실행할 설치, 당신의 node_modules
이 돌아왔음을 발견할 수 있습니다!물론 플러그 앤 플레이 안정성과 성능 개선이 없다면, 적어도 이미 알고 있는 분야에서 당신의 일을 계속할 준비가 되어 있을 것이다.2.packageExtensions 설정
말.
이.🧩 하지만 PnP를 사용한다면, 프로젝트에 의존 항목이 표시되지 않으면 "packageExtensions"를 사용하여 몇 초 안에 복구하세요!yarnpkg.com/configuration/…
14:2020년 8월 31일 오후 37시
0
십일
클릭하여 더 알아보기!
즉, 링크기 사용
node_modules
이 마지막 선택일 수 있습니다.어쨌든, 우리는 그것을 규범이 아니라 예외로 하기로 결정한 데는 많은 이유가 있다.그러나 모든 의존항을 열거하지 않은 문제가 있는 패키지를 처리할 때 어떻게 계속합니까?우리는 그들이 해결하기를 기다려야 합니까?다행히 없어요.packageExtensions
설정을 사용하여 이러한 문제를 해결하는 것이 좋습니다.관련 패키지의 부족한 의존 항목만 설명하고 Yarn이 처리하도록 하세요.나는 프로젝트에서 자주 사용합니다. 예를 들면:packageExtensions:
"@apollo/client@*":
dependencies:
"@wry/context": "*"
peerDependenciesMeta:
"react":
optional: true
react-dom:
optional: true
잊지 마세요. 당신은 수시로 상류에 PRS를 보내서 당신과 당신의 지역 사회를 위해 이 문제를 지속적으로 해결할 수 있습니다!3. Yarn용 E2E 배터리
말.
삼.🔭 Yarn은 4시간마다 커뮤니티의 다양한 프로젝트에 대해 E2E 테스트를 수행합니다.문제가 발생하면 (새 버전에 의존 항목이 부족합니까?)우리는 보통 먼저 깨닫고 복구에 자주 기여한다github.com/yarnpkg/berry#…
14:2020년 8월 31일 오후 37시
이.
21
클릭하여 더 알아보기!
'사선2'의 상당 부분은 사선을 실현하기 위한 것이지만 우리도 생태계 복원에 도움을 주고 싶다.엄격한 규칙을 따르는 사람이 없다면 이 규칙을 강제로 집행하는 패키지 관리자를 구축하는 것이 무슨 좋은 점이 있겠는가?따라서 우리는 많은 PRS를 제출하여 그들의 프로젝트를 잊기 위해 부족한 의존항을 추가하고 위험성을 설명하며 모든 사람이 1월 발표 전에 이 문제들을 해결할 수 있는 시간을 확보했다.
그럼에도 불구하고 적극적으로 조치를 취해 이 문제들을 해결하는 항목도 때때로 후퇴할 수 있다.예를 들어, Next와 같은 대형 OSS 프로젝트.js는 속도가 매우 빨라서 새로운 의존 항목을 열거하지 않은 PRS를 합병할 때가 있습니다.최악의 경우, 우리는 누군가가 버그 추적기에서 문제를 열었을 때만 그것을 알아차릴 수 있다.그다지 좋지 않다!
따라서 일정 시간 후, 우리는 우리 자신의 E2E 테스트를 실시하기로 결정했다.한 무리의 사람들GitHub workflows이 구워서 4시간에 한 번씩 운행한다. 만약 생태계에 어떤 오류가 발생하면 그들은 우리에게 알려줄 것이다.덕분에 JavaScript 생태계가 건전해지는 추세일 뿐만 아니라 우리가 주의하지 않을 때도 목표에서 벗어나지 않도록 하는 데 도움이 된다😉
4. 캐시 무결성
말.
사.🔥 사선2는 각 설치 사이의 캐시 완전성을 검사한다.이것은 좀 느리지만'yarn install'이 종료될 때 오류 코드가 없으면, 프로젝트가 좋은 상태인지 확인할 수 있습니다🙂
14:2020년 8월 31일 오후 37시
0
십이
클릭하여 더 알아보기!
v1로 돌아가면 캐시가 파괴될 수도 있습니다.이것은 상당히 보기 드문 사건이지만, 이론적으로는 발생할 수 있다.그리고 만약 이런 상황이 발생한다면 Yarn은 그것을 감지할 수 없으며, 이것은 결국 매우 어려운 디버깅 세션을 초래할 것이다.
v2에서 Yarn은 소프트웨어 패키지를 디스크에 설치하기 전에 완전한 검증 과정을 실행합니다.검증 속도가 매우 빨라서 (우리의 저장소에서 2초도 안 걸린다고 생각한다) 각종 문제를 방지할 수 있다.예를 들어, 플러그 앤 플레이 방식으로 기기의 모든 프로젝트 간에 같은 캐시를 공유할 수 있기 때문에, 디버깅 세션 동안 의존 항목의 원본을 수정하고 복구하는 것을 잊어버릴 수도 있습니다.무결성 검사를 통해 Yarn은 다음 실행 시 문제를 알 수 있습니다
yarn install
!5, 파일 클론
말.
오.👥 Yarn은 사용 가능한 경우 네이티브 파일 클론을 사용하므로 각 항목이 아닌 캐시 크기를 한 번만 지불해야 합니다nodejs.org/api/fs.html#fs….
14:2020년 8월 31일 오후 37시
0
십
클릭하여 더 알아보기!
node_modules
의 설치 속도를 매우 느리게 하는 재미있는 일은 설치와 캐시의 상호작용 방식이다.Yarn 1로 돌아가면 캐시는 포장되지 않은 파일을 포함하고 설치 과정에서 모든 파일을 프로젝트에 복사합니다.또한 파일 클론(사용 fs.copyFile
을 사용했지만 파일 수가 많기 때문에 여전히 많은 입출력을 수행해야 합니다.사선2에서 파이프는 완전히 다르다.플러그 앤 플레이 방식으로 의존 항목을 압축할 수 있습니다. 이것은 캐시와 설치 부품 사이에 아무런 차이가 없다는 것을 의미합니다!따라서 절대 최악의 경우에도 우리는 가방마다 한 번만 복제 작업을 수행할 수 있고 이전에는 수백 번이었다.
Reference
이 문제에 관하여(사선첨단, 제1부분), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/arcanis/yarn-tips-part-1-g52텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)