NPM 패키지 평가 방법

나는 최근에 리액션 개발을 어떻게 가속화하는지에 관한 문장article을 썼는데, 바퀴를 재발명하는 것이 아니라 소프트웨어 패키지를 사용하는 것을 건의했다.예를 들어, 당신은 자신의 실현을 구축하는 것이 아니라 패턴 라이브러리를 사용하기를 원할 것이다.(내가 말한'거의 긍정'은 학대광과 학대광 교관을 포함한다.)
다음은 내가 이전에 추천한 조건이다.타사 소프트웨어를 사용하면 위험이 따릅니다.악성 패키지는 거의 매주 뉴스가 된다.개발자들은 추천하지 않는 라이브러리에서 수백만 시간을 이동했다.
하나의 예로, 나는 지속성, 성능, 안전 위험을 평가하는 각종 주요 정량축을 따라 몇 개의 유행하는 React 구성 요소 라이브러리를 비교할 것이다.물론 이것이 소프트웨어 패키지를 선택하는 주요 요소임에도 불구하고 API와 UI 등 주관적인 문제를 깊이 연구하지는 않을 것입니다.비록 이 고차원 소스 오픈 소프트웨어에서도 위험 상황의 차이는 매우 뚜렷하다.
  • Chakra UI
  • Evergreen
  • Antd
  • Base Web
  • 오래 살다


    개발자는 스타를 좋아한다.그것들은 사실상 저장소의 질에 대한 도량이다.그러나 그것들은 불완전하고 때때로 오도적인 장청 잠재력을 평가하는 지표이다.다른 흔히 볼 수 있는 지표는 얼마나 많은 저장소가 이 프로젝트를 사용하는지, 얼마나 많은 공헌자, 그리고 어느 조직이 이 프로젝트를 협찬하는지이다.다음은 구성 요소 라이브러리를 스택하는 방법입니다.
    싸다
    별.
    사용
    공헌자
    회사 스폰서
    맥박
    12.4k
    638
    246
    상록수
    10.3k
    1626
    105
    토막
    개미.
    64.8k
    5000+
    1305
    기망
    5.6k
    1012
    177
    좋은 걸음
    이 모든 라이브러리는 이미 만들어졌지만 Antd는 다른 라이브러리보다 훨씬 높습니다.그것은 당연히 비난을 받을 위험이 없다.Antd의 뚜렷한 장점은 나이에 있다.다른 도서관에서 package.json 버전을 가지고 있었기 때문에 더 많은 스타와 사용자를 얻기 전부터 유행하기 시작했다.수년간 유일한 주요 경쟁사는 Material UI였습니다.
    어떤 패키지를 설치하기 전에, 나는 보통 Tim Qian의fantastictool를 사용하여 그의 star 기록을 검사한다.Antd의 강점은 다음과 같습니다.

    Antd는 우리의 그래프 규모를 거의 깨뜨렸기 때문에 우리의 신입사원들을 자세히 살펴보자.

    이곳에서 우리는 전혀 다른 궤적을 보았다.별수만 놓고 보면 차크라 UI와 에버그린이 도입률 면에서 대체로 비슷하다고 생각할 수 있지만, 차크라 UI는 경쟁사들을 능가하는 게 분명하다.모든 이 라이브러리들은 최초의 항성 폭발을 받았지만, 맥박만 지난 1년 동안 성장을 유지했다.
    패키지 평가를 할 때 기업 협찬을 우선적으로 고려하고 시장을 세분화하는 상청망과 우보의 기초 사이트로 선택 범위를 좁힌다고 가정해 보세요.상록수의 스타 수와 채용률이 훨씬 높다는 점을 감안하면 뚜렷한 승자인 것 같다.Evergreen의 부족한 점은 공헌자의 분포와 제출 빈도에 있다.다음은 6대 기고인의 순위activity:

    세 명의 개발자를 제외하고는 에버그린에는 중요한 공헌자가 거의 없다.더 우려되는 것은 이 세 핵심 공헌자 중 두 명이 1년여 동안 활발하지 못했다는 점이다.기본 웹compares을 사용하는 방법은 다음과 같습니다.

    BaseWeb의 공헌 분포도 어느 정도 두중경미하지만, Evergreen보다 평등하고, 최고 공헌자는 여전히 활발하다.동시에 에버그린의 전체 무게는 mshwery의 어깨 위에 떨어진 것 같다.
    코드 주파수도도 비슷한 상황을 설명했다.Base Web에 대한 기여도 향상:
    Evergreen

    Base Web

    성공한 과학 기술 회사가 지원하는 도서관은 왕왕 더 오래 지속된다. (React 자체가 좋은 예이다.) 그러나 그것들도 자신만의 위험이 있다.때때로, 한 명의 엔지니어만 회사 내부의 개원고를 지원한다.이 창도자들이 떠날 때, 만약 기구의 지지가 없다면, 이 프로젝트는 사라질 수도 있다.Antd와 Chakra UI와 같은 더 분산된 패키지는 정치적 무관심을 막을 수 있다.

    표현


    같은 일을 하는 두 소프트웨어는 크기가 크게 다를 수 있다.Moment.js는 가장 인기 있는 날짜조종 라이브러리로 매주 1200만 건의 다운로드를 받지만, 그다지 좋지 않아 당신의 프로젝트에 300kB를 증가시킬 것이다.Day.js의 API는 거의 동일하며 2kB에 불과하다.사실 이 순간.js는 현재 recommends 데이를 사용합니다.js와 다른 날짜 라이브러리를 대체합니다.
    필요한 경우 각 어셈블리 라이브러리의 비용은 다음과 같습니다Bundlephobia.
    싸다
    치수 축소
    흔들림나무
    부작용
    의존 관계
    Chakra UI
    363.3kB
    예, 그렇습니다.
    아니오.
    44
    Evergreen
    795.3kB
    예, 그렇습니다.
    아니오.
    17
    Antd
    1.2MB
    예, 그렇습니다.
    예, 그렇습니다.
    45
    Base Web
    60.9kB
    예, 그렇습니다.
    아니오.
    22
    표현적으로 말하자면, Antd는 분명히 진 사람이다.겸사겸사 말씀드리지만, 지금.js는 그 규모의 약 20% 를 차지한다.새로운 3G에서 전체 Antd 패키지를 다운로드하는 데 거의 7초가 소요됩니다.Antd가 부작용이 있다는 사실도 우려스럽다.부작용(모듈 밖에서 일부 행위를 수행하는 코드)은 트리의 운동을 방해할 수 있다.번들은 필요한 외부 효과가 있을 수 있기 때문에 부작용이 있는 모듈을 안전하게 제거할 수 없다.
    Bundlephobia가 제공하는 데이터는 매우 계발적이지만 완전하지는 않다.만약 가방의 대부분 내용이 진동을 받았다면, 프로그램 크기에 대한 영향은 제한적일 수 있다.응용 프로그램 컨텍스트에서 크기를 정확하게 평가하려면 번들 컨텐트의 트리 뷰를 시각화하는 도구Webpack Bundle Analyzer와 같은 도구를 사용합니다.

    보안


    가장 안전한 소프트웨어 패키지는 인기가 많고 유지 보수가 양호하며 최소한의 하위 의존성이 필요하다.한 라이브러리에 수백만 개의 다운로드가 있어도 이러한 추가 기준을 충족시키지 못할 때(예를 들어 event-stream의 원시 비활동 관리자가 발표권added a malicious downstream dependency을 부여할 때) 그 위험은 더욱 높아진다.만약 소프트웨어 패키지가 매우 인기가 있다면 더욱 많은 사용자들이 안전 문제를 신속하게 발견할 것이다.만약 그것이 잘 유지된다면 더 많은 개발자가 그것을 수리할 것이다.만약 그것이 거의 의존성이 없다면, 우선 위험은 더욱 작아질 것이다.
    우리가 연구한 모든 구성 요소 라이브러리는 안전할 수 있지만, Chakra UI와 Antd의 많은 의존성 때문에 공격을 받기 쉽다.의존항을 다운로드한 후 yarn audit 또는 npm audit를 사용하여 심사를 집행해야 한다.이러한 CLI 명령은 패키지의 보안 취약점을 인식하고 패치를 권장합니다.이상적인 경우, 모든 요청에 알려진 빈틈에 대한 의존성을 검사하기 위해 지속적인 통합 파이프에 yarn audit 또는 npm audit를 포함해야 합니다.yarn audit 장영의 낮은 위험 문제를 분명히 제시했다.
    ┌───────────────┬──────────────────────────────────────────────────────────────┐
    │ low           │ Denial of Service                                            │
    ├───────────────┼──────────────────────────────────────────────────────────────┤
    │ Package       │ node-fetch                                                   │
    ├───────────────┼──────────────────────────────────────────────────────────────┤
    │ Patched in    │ >=2.6.1 <3.0.0-beta.1|| >= 3.0.0-beta.9                      │
    ├───────────────┼──────────────────────────────────────────────────────────────┤
    │ Dependency of │ evergreen-ui                                                 │
    ├───────────────┼──────────────────────────────────────────────────────────────┤
    │ Path          │ evergreen-ui > glamor > fbjs > isomorphic-fetch > node-fetch │
    ├───────────────┼──────────────────────────────────────────────────────────────┤
    │ More info     │ https://www.npmjs.com/advisories/1556                        │
    └───────────────┴──────────────────────────────────────────────────────────────┘
    
    상술한 공고는 9월 10일, 상청의 최신 버전은 9월 28일에 발표된다.이 문제는 중요하지 않을 수도 있지만, Evergreen은 이 버전이나 그 어떠한 후속 약속에서도 이 문제를 해결하지 못했다. 이것은 그들이 안전성에 대한 관심이 부족하다는 것을 나타낼 수 있다.
    만약 소프트웨어가 이미 세계를 삼켰다면, 소스 오픈 소프트웨어는 그것을 앞으로 발전시킬 것이다.소프트웨어 패키지를 평가할 때 전차를 꼼꼼히 선택하면 토요일 저녁에 소파에 앉지 않고 매끄럽고 유연한 딱정벌레 위에 앉아 있는 것을 발견할 수 있다. 응용 프로그램 전체에 의존하는 고대 도서관에 인출 요청을 하고 백모대해안 부근의 유지보수에게 심사를 기도한다.

    우리


    Carrots에서 우리는 소프트웨어 엔지니어를 위한 채용 플랫폼을 구축하고 있다.너는 너의 이력서를 자랑하기 위해 GitHub, Stack Overflow 등을 연결할 수 있다.Google의 알고리즘은 귀하가 세계적인 인재 중 순위를 표시하고 귀하의 개인 자료를 톱 기업에 보여 줍니다.

    좋은 웹페이지 즐겨찾기