가장 쉬운 방법은 package.json에서 모든 패키지를 검색하고 npm 레지스트리를 사용하여 새 업데이트가 있는지 확인하는 것입니다. 나는 그것의 대부분을했다. 루프를 위해 다음 사항을 수락 :반응이 많은 약속에서 이것을 처리하는 방법을 잘 모르는 경우
import request from 'request'
export const findAllUpdates = (packageInfo) => {
for(prop in packageInfo) {
request('https://registry.npmjs.org/' + prop, function(err, resp) {
json = JSON.parse(resp.body);
if (json['dist-tags'].latest !== packageInfo[prop].version) {
// Do something, we are not the same version so we should
// update some counter.
}
});
}
}
귀하의 packageInfo
을 종속성 또는 package.json과 패키지 lock.json 또는 yarn.lock에서 dev에 의존성 중 하나를 나타냅니다 key=>value
의 객체가되어
중요한 부분은 위의 함수에서 설치 한 것입니다. 그런 다음 레지스트리를 사용하여 패키지 정보를 얻은 다음 레지스트리의 최신 버전을 설치 한 후 가장 이상적으로 비교합니다 총 카운트로 구성 요소의 상태를 업데이트합니다.
어떤 문제가 우리가 콜백 지옥을 입력했는지, 특히 for 루프를 사용하여 모든 패키지를 루핑하여 요청을하는 경우가 있습니다.
요청을 한 후에도 변수에 액세스 할 수 없으므로 변수를 만들고 거기에 응답을 저장할 수 없습니다. 당신이 40 개의 패키지를 dep 또는 dev로 설치하고 많은 이벤트를 발생시킬 수 있기 때문에 여기서 이벤트를 사용하는 것이 어떻게되는지 알 수 없습니다.
마지막으로 적절한 해결책은 약속을 사용하는 것일 수 있지만 약속의 전체 개념은 .then(() => {})
, .catch(() => {})
과 함께 콜백이 더 많아 나를 사각으로 돌려 놓습니다.
목표는 구성 요소에이를 호출하고 해당 구성 요소의 상태가
어떤 아이디어를 업데이트 (또는 적어도 새로운 버전이)해야 할 패키지의 총량으로 업데이트하는 것입니다? 나는이 모든 잘못을 저지르고 있는가?