2016-08-30 3 views
4

왼쪽 패드의 실패로 인해 필자는 계속 읽었지만 어떻게되었는지에 대해서는 다소 혼란 스럽습니다. npm이 실제로 어떻게 작동하는지에 대한 오해가 있다고 생각합니다. 왼쪽 패드의 개발자가 패키지 게시를 취소 한 경우 npm install left-pad이 더 이상 작동하지 않는다고 가정합니다. 그러나 이미 설치 한 사용자의 경우 left-pad가 node_modules 폴더에 남아 있지 않습니까? 개발자들은 Babel이 패키지가 사라 졌다는 것을 깨닫기 위해 왼쪽 패드를 제거하고 다시 설치해야합니까? 나는 분명히 뭔가를 놓치고 있지만 무엇이 확실하지 않습니다.npm 왼쪽 패드 중단 코드의 게시가 어떻게 취소 되었습니까?

+2

당신은 NPM을 오해하지 않고 있습니다. 그 당시의 풋 베이트 타이틀을 오해하고있는 것입니다. 누군가'npm install'을'package.json'에서 시도해 본다면'left-pad'를 문자 그대로 런타임을 사용하지 않고 중단 시키려한다는 것을 의미합니다. 나는 "한 사람이 어떻게 인터넷을 거의 망가 뜨린 지"라는 제목의 제목을 보았습니다. 한숨. –

답변

6

npm install babel을 실행하면 왼쪽 패드가 묶음으로 묶이지 않고 package.json 파일의 종속성으로 표시됩니다. 그래서 npm은 왼쪽 패드를 찾아서 다운로드해야합니다. 따라서 왼쪽 패드를 사용하거나 왼쪽 패드를 사용하여 처음으로 설치하는 경우에는 할 수 없습니다. 이것은 로컬 디렉토리에 이미 존재하는 것이 안전하다는 것을 의미하지만, 프로젝트는 다른 곳에서 빌드 되 자마자 제대로 빌드하지 못할 것입니다. 예를 들어, 각각의 새로운 변경 집합에 대해 처음부터 새로 빌드를 수행하는 CI 서버는 왼쪽 패드에 의존하는 프로젝트를 빌드하는 데 실패합니다. 처음으로 프로젝트를 체크 아웃하거나 새 서버에 배포하는 경우에는 빌드 할 수 없습니다.

왼쪽 패드를 직접 사용하는 경우 수정이 간단합니다. 교체 코드를 작성하고 코드를 업데이트하여 교체 코드를 사용하십시오. 하지만 바벨의 의존성 트리가 깊숙이 필요하다면 바벨이나 다른 모듈을 리필하여 왼쪽 패드 대체물을 사용할 수는 없습니다. 다양한 노드 모듈 개발자가 모듈을 다른 것으로 업데이트하고 다시 게시 할 때까지 기다려야합니다.

뉴스 기사에서 들었던 것처럼 묵시록이 아니지만, 거대한 불편 함이 있으며 왼쪽 패드가 이미 캐시 된 개발자 작업 공간 외부의 많은 시스템에서 렌치를 던집니다.

+0

Ninja'd. 의존성에 대한 의존성에 대해 이야기하는 것을 잊어 버렸습니다. 제가 그 사건을 기억한다면, 그것은 주된 문제였습니다. 그래도 좋은 설명 :) – DrakaSAN

+0

@DrakaSAN 정말 좋은 지적입니다. 업데이트됩니다. –

+0

고마워요! 이것은 이해가됩니다 (: 리팩터링 의존성은 정말로 어렵겠습니까? 이전에 이미 복사본이 있으므로, 하나의 모듈을 커밋하여 전체 프로젝트의 일부로 로컬 모듈을 만들 수 없습니까? –

1

@ 라자르가 말했듯이 당신은 올바르게 이해했습니다.

바벨이 왼쪽 패드를 의지하고 바벨을 설치하려고하면 문제가 발생합니다.

글쎄, 필자는 항상 직접 해결 방법으로 다시 작성할 수 있습니다.

바벨이 사용하는 모듈에서 사용하는 모듈이 사용하는 모듈이라면 바벨이 아무 것도 할 수 없기 때문에 진짜 악몽에 처하게됩니다. 왼쪽 패드에 의존하는 모든 단일 모듈 사용자가 코드를 업데이트 할 때까지 기다려야합니다.

+0

[proxyquire] (https://github.com/thlorenz/proxyquire), [SystemJS] (https://github.com/systemjs/systemjs), [JSPM] (https : // github.com/jspm/jspm) 등은 실제로 제어, 앨리어스 및 스왑 아웃 할 임의의 종속성 하위 그래프를 제공합니다. 따라서 기술 문제의 대부분은 NPM에서 의존성을 관리하는 데 있습니다. 왜냐하면 _it_node가 Node.js'require' 알고리즘에 효과적으로 위임하는 방식 (즉, 파일을 디스크에 저장하기 만하면됩니다)입니다. 따라서이 기간 동안 Babel의 전이 종속 버전을 사용할 수있었습니다. –