당신은 어떻게 비교 npm
하고 bower
,volo
?
세 가지 모두 UI 프로젝트에 대한 JavaScript 종속성을 설치하는 데 사용할 수 있습니다. 이해 했어요npm
더 노드마다 다르다는 합니다.
그래서 언제 무엇을 사용해야합니까?
npm
여전히 먼 의미하지만, bower
하고 volo
나는 사이에 선을 그릴 수 아니다 있지만, 정확히 같은 문제를 해결하는 것 같다 npm
하고 bower-volo
.
당신은 어떻게 비교 npm
하고 bower
,volo
?
세 가지 모두 UI 프로젝트에 대한 JavaScript 종속성을 설치하는 데 사용할 수 있습니다. 이해 했어요npm
더 노드마다 다르다는 합니다.
그래서 언제 무엇을 사용해야합니까?
npm
여전히 먼 의미하지만, bower
하고 volo
나는 사이에 선을 그릴 수 아니다 있지만, 정확히 같은 문제를 해결하는 것 같다 npm
하고 bower-volo
.
답변:
npm과 bower의 차이점을 가장 잘 설명하는 설명은 다음과 같습니다. npm은 패키지라는 JavaScript 모듈을 관리하고 Bower는 구성 요소라고하는 프런트 엔드 구성 요소 (예 : css, html 및 JavaScript)를 관리합니다. npm은 bower 설치에도 사용됩니다. 다음은 npm 및 bower (volo를 다루지 않음) 에 대한 광범위한 기사입니다 .
기능이 거의 없지만 프론트 엔드 개발자들 사이에서 여전히 인기가 있습니다. 모든 프론트 엔드 패키지가이를 사용하고 있습니다. bower를 npm으로 병합 하는 이니셔티브 도 있습니다 .
Bower는 클라이언트 측에 최적화되어 있으며 단순한 종속성 트리 만 지원합니다. 즉, 각 라이브러리는 한 번만 사용해야하며 (같은 라이브러리의 다른 버전을 클라이언트에 제공하는 데 비용이 많이 들기 때문에) 종속성 제약 조건은 사용자가 해결해야합니다. .
bower registry ( bower search <some keyword>
) 에서 프론트 엔드와 관련된 것을 찾을 수 있습니다 . 제 생각에는 다른 패키지 관리자와 관련하여 bower의 가장 큰 장점입니다.
나는 아직도 5 년 이상 그것을 사용하지 않았다. 그것에 대해 모르지만, 내가 볼 수있는 것은 Grunt 사용자에게 매우 친숙한 빌드 도구가 포함되어 있습니다.
예, npm은 Node Package Manager를 나타냅니다. 그러나 요즘에는 모든 것에 사용할 수 있습니다. 사람들은 더 이상 npm install
물건을 먹지 않고 노드 환경 에서만 작동하기를 기대합니다 . 예를 들어 Twitter Bootstrap에 대한 많은 npm 패키지가 있습니다.
Npm은 중첩 종속성 트리를 사용하여 서버 측 사용에 최적화되어 있습니다. 각 종속성에는 고유 한 종속성 등이있을 수 있습니다. 각 종속성이 자체 버전의 Underscore를 사용할 수 있기 때문에 종속성 버전 충돌이 제거되었습니다. 그러나 다가오는 npm 버전 3은 종속성 트리를 평평하게합니다 .
npm @ 3을 사용하면 node_modules 디렉토리가 훨씬 더 평평 해집니다. 모든 종속성과 대부분의 하위 종속성 (및 (하위) + 종속성)은 최상위 수준에서 서로 옆에 있습니다. 충돌이있을 때만 더 깊은 수준에서 모듈이 설치됩니다. 이것은 Windows 사용자에게 훨씬 쉬워 질 것입니다.
npm 사용에 대한 몇 가지 장점 :
npm은 JavaScript의 패키지 관리자입니다.
2013 년 2 월 기준으로 제 의견은 다음과 같습니다. 더 이상 고려하지 마십시오.
노드 프로젝트를 사용하는 경우 브라우저에 사용할 수있는 프로젝트가 거의 없습니다 ...
Bower는 지금 팝 녀석입니다. 그들은 많은 프로젝트를 수행하고 있으며 프로젝트 관리자는 프로젝트를 최신 레지스트리로 유지하는 것을 좋아합니다 ...
그는 때때로 약간 버그가 있다는 것은 부끄러운 일입니다.
그 이후로 5 분 이상 volo를 시도하지는 않았지만 볼 수있는 것보다 bower보다 유연 해 보입니다.
volo의 단점은 프로젝트가 매우 오래되었다는 것입니다.
그들은 같은 문제를 해결하지만 다른 환경 / 세계에 대해 해결하는 것 같습니다. nodejs 및 volo의 NPM, 브라우저의 bower.
진실은 NPM을 사용하여 브라우저의 자바 스크립트 및 CSS를 관리 할 수 있다는 것입니다. 당신이 그것을 방해하는 것은 없습니다. 그런 의미에서 NPM을 사용하는 것은 동일한 목적을 위해 두 개의 서로 다른 도구를 관리하는 것보다 자연스러운 느낌입니다.
bower는 적어도 더 인기있는 패키지에 대해 더 많은 패키지를 사용할 수있는 것으로 보입니다. 그러나 곧 jQuery를 NPM에서 직접 사용할 수도 있습니다. 다른 모든 라이브러리는 동일한 추세를 따릅니다.
제 생각에는,이 때문에 같은 도구 browserify가 와 webmake 브라우저에서 해당 도움말을 사용 노드 모듈, 거기에 대한 진정한 필요 이상이없는 이물 또는 볼로은 그들이 특정 모듈은 기존 (당신을 위해 뭔가를 제공하지 않는 한, 그들의 레지스트리).
두 볼로 와 정자 너무 좋다,하지만 당신은 이미 NPM을 사용하는 경우 내 관점에서, 그것은 그것에 충실하는 것이 더있을 수 있습니다.
것을주세요 참고 당신도 browserify 또는 webmake를 사용하지 않고 클라이언트 종속성을 관리하는 NPM을 사용할 수 있습니다 . 내가 작업하고있는 대부분의 프로젝트에서 npm 모듈을 설치 한 후 스크립트를 실행하여 클라이언트 앱이 사용하는 위치에 배포합니다. 때로는 grunt를 사용하여 해당 파일을 다른 js 파일과 연결하고 때로는 웹 응용 프로그램의 템플릿 파일에서 직접 참조합니다. 어쨌든 이것은 개인적인 취향입니다. 다른 사람들은 Bower 또는 Volo가 워크 플로에보다 자연스럽게 맞기 때문에 사용하기가 더 쉽다는 것을 알 수 있습니다.
yeoman
우리가 이미 가지고 있었을 때 프로젝트가 새로운 패키지 관리자를 선택하기로 선택한 이유 는 npm
무엇입니까? (성숙하고 유명하며 기능이 풍부했습니다)이 생각은 여전히 실제 포인트가 누락되었다고 생각합니다.
npm
프론트 엔드 단순성을 위해 번거 로움을 분리하고 싶었던 것 같습니다 . 따라서 프론트 엔드 개발이 필요합니다.
Bower의 NPM에 대한 큰 장점은 종속성 관리가 단일 버전의 구성 요소를 사용한다는 것입니다 (NPM은 다른 복사 / 버전을 다른 모듈의 하위 종속성으로 사용함으로써 작동 함). 이것은 매우 좋은 것입니다 다른 버전의 구성 요소의 여러 복사본을 포함해야하므로 클라이언트 측 자바 스크립트가 부풀어 것을 방지하기 때문에 것입니다. 모듈의 여러 복사본을 포함시키는 것은 NPM의 종속성 관리 작동 방식의 핵심이므로 NPM은 전적으로 클라이언트 측 패키지 관리에 적합하지 않습니다.
위의 결과는 바우어 패키지 관리자와 소비자가 충돌을 피하기 위해 종속성 버전 번호를 유지하는 데 더 신경을 써야하지만 지불해야 할 가격입니다. 그리고 NPM 모듈이 주요 릴리스, 부 버전 및 패치 릴리스를 발행 할 때 종종 느슨해 지므로 NPM 종속성 관리도 장미 침대가 아닙니다.
나는 이것이 질문의 범위에 있지 않다는 것을 알고 있지만 또 다른 대안이 있습니다. Jam JS- http ://jamjs.org/ 흥미로운 점은 잼 기능이있다는 것입니다.
jam compile output.js
누군가 다른 패키지 관리자를 만들고 이름을 yapm으로 지정해야합니다. :)