LHJ

I'm a FE developer.

yarn

18 Sep 2020 » issue

npm과 yarn 차이

NPM allowed packages to run code on installation automatically and on-the-fly, 
even from their dependencies automatically and on the fly. 
While this feature has its conveniences, it raised a few security 
concerns – especially considering the no-vetting registry policy on 
package submissions which we talked about early on. Conversely, 
Yarn only installs from your yarn.lock or package.json files. 
More specifically, yarn.lock ensures that the same package is installed throughout 
all devices, thus drastically reducing the chance of bugs from having different 
versions installed.

NPM은 패키지가 설치시 자동으로 즉시 코드를 실행할 수 있도록했습니다.
의존성에서도 자동으로 그리고 즉시.
이 기능은 편리하지만 몇 가지 보안을 높였습니다.
우려 사항 – 특히 검사 금지 레지스트리 정책을 고려하여
우리가 일찍 이야기했던 패키지 제출. 거꾸로,
Yarn은 yarn.lock 또는 package.json 파일에서만 설치됩니다.
보다 구체적으로 yarn.lock은 동일한 패키지가 전체에 설치되도록합니다.
모든 장치를 사용하므로 버그가 서로 다른
설치된 버전.

위 내용은 간단히 말하면 다음과 같다.
개발자가 악의적으로 이상한 코드를 넣어 라이브러리(모듈)를 개발한다면,
이상한 악성 코드를 넣었음에도 불구하고 npm은 즉시 실행을 해버리기 때문에 보안상 취약해진다.

속도와 개발자 편이성을 위해 넣은 기능이 반대로 보안상 문제를 일으킨 경우다.
이를 yarn은 보완했다.
그래서 yarn을 사용하는 개발자들도 꽤 많다.
과거엔 yarnnpm보다 속도 면에서 좀 느렸지만 지금은 거의 차이가 없다.

이러한 문제를 node를 개발한 개발자도 언급한바 있다.
그래서 deno를 만든거라고도 했다.