2014-04-28 5 views
33
에 최신 버전을 설치하지 설치를

나는 모듈은 '돛 - 몽고'라고하고 난 다음 명령을 사용하여 최신 버전으로 업데이트하려면 : 다시 설치 나는 또한 제거를 시도NPM은 GitHub의

npm update sails-mongo --save 

을 . 나는 [email protected][email protected]을 시도했다.

문제 : 현재 package.json은 (https://github.com/balderdashy/sails-mongo/blob/master/package.json) 파일을 갖는다 GitHub의에 버전 (마스터)

"dependencies": { 
    "async": "~0.2.9", 
    "lodash": "~2.4.1", 
    "mongodb": "1.4.2", 
    "waterline-errors": "~0.10.0" 
}, 

그리고 하나는

"dependencies": { 
    "async": "0.2.10", 
    "underscore": "1.5.2", 
    "underscore.string": "2.3.3", 
    "mongodb": "~1.3.23" 
}, 

업데이트되고 유일한 방법은 내가 마스터 브랜치를 사용하여 명령을 사용하는 것입니다. npm install git+https://github.com/balderdashy/sails-mongo

[email protected]이 마스터 분기를 설치하지 않는 이유는 무엇입니까?

+7

NPM은 Github에서 설치하지 않으므로 [NPM] (https://www.npmjs.org/package/sails)에서 설치합니다. 'package.json'의'repository' 키는 NPM 페이지에 보여지는 저장소를 식별합니다. –

+0

+1하지만 잘 모르겠습니다. 다르게 묻습니다 : NPM은 어떤 버전을 설치할 것인지 어떻게 압니까? – user2867106

+2

패키지는 Github과 별도로 NPM에 게시됩니다. 개발자가 패키지를 발행하면'package.json'에서 버전 번호를 가져옵니다. NPM은 Github과 거의 비슷하게 이들 각각을 저장합니다. NPM을 설치할 때 을 설치하면 항상 최신 버전이 설치되지만,'package.json'에 패키지를 지정하면 설치할 버전을 추가 할 수 있습니다. –

답변

42

기본적으로 NPM 종속성은 NPM 저장소에서 가져옵니다. 제작자는 소프트웨어의 새 버전을 수동으로 NPM 저장소에 업로드해야합니다. 따라서 NPM에서 호스팅되는 코드의 "@latest"버전은 GitHub과 같은 최신 버전의 코드와 다릅니다.

NPM 저장소의 info page on Sails에 따르면 최신 NPM 호스트 버전은 0.9.16이고 current GitHub version0.10.0-rc3입니다.

NPM 저장소에 호스팅 된 버전 대신 특정 지점 또는 특정 Git 저장소의 커밋을 프로젝트에 종속시키려는 경우 NPM 개발자는이를 허용하는 명시적인 메커니즘을 포함 시켰습니다. package.json docs에서 "Git URLs as Dependencies"에서 자세히 설명 : 종속성으로

망할 놈의 URL을

망할 놈의 URL은 형태가 될 수 있습니다

git://github.com/user/project.git#commit-ish 
git+ssh://[email protected]:project.git#commit-ish 
git+ssh://[email protected]/project.git#commit-ish 
git+http://[email protected]/project/blah.git#commit-ish 
git+https://[email protected]/project/blah.git#commit-ish 
,

commit-ishgit checkout에 대한 인수로 제공 할 수있는 태그, sha 또는 분기가 될 수 있습니다. 기본값은 master입니다.

는 사실, 종속성으로 use a Github.com repo 여전히 쉽게 :

버전 1.1.65로, 당신은 "foo": "user/foo-project"로 GitHub의 URL을 참조 할 수 있습니다.예를 들어 :

{ 
    "name": "foo", 
    "version": "0.0.0", 
    "dependencies": { 
    "express": "visionmedia/express" 
    } 
} 
그래서

이의 항해 GitHub의의의 repo를 사용하려면 사용

"dependencies": { 
    "sails": "balderdashy/sails-mongo", 
    ... 
} 

그리고 그것은 2014 년 4 월 28로 GitHub의에 존재하는 항해의 정확한 상태를 사용하는 , 사용 :

"dependencies": { 
    "sails": "git://github.com/balderdashy/sails-mongo#b9cdce9a48", 
    ... 
} 
+1

그래서 실제로 github에 가지 않고 특정 릴리즈/브랜치/등을 체크하지 않고''''stable stable'' 릴리즈를 설치하는 방법은 실제로 없습니다. 너 필요해? – Andrey

+0

@Andrey 최신 stable 버전을 위해 repo의 master 브랜치를 사용할 수 없습니까? repo 관리자가 새 분기를 계속 만들고 최신 분기가있는 분기를 전환 한 경우 예를 들어, 분기가 최신 분기 인 유지 관리원의 쉘 게임에 계속해서 따라해야합니다. – apsillers

+0

항상 그렇지는 않습니다. 즉,'''npm install github : jquery/jquery-ui''는 최신 사용 가능한 릴리스 (https://github.com/jquery/jquery-ui/releases)를 설치합니다 ... – Andrey

1

나는 비슷한 문제가 있었다. 고궁 박물원 레지스트리를 통해이 같은, 내가 GitHub의에서의 본 프로젝트에서 최신을 얻으려고 노력했다 :합니다 (node_modules/ 폴더에 관찰)

//package.json 
"devDependencies": { 
    "foo-package": "^3.3.0", 
} 

을하지만 코드가 내가 npm install에서 돌아 왔을 것은 내가 아니었다 GitHub 저장소의 마스터 분기에서 본 나는 혼란 스러웠다. 두 사람이 맞지 않아서.

결국 발견 : https://docs.npmjs.com/cli/view NPM 레지스트리가 특정 저장소에 대해 알고있는 정보 (버전 및 날짜)가 나타납니다.

// Console example 
npm view foo-package 

내가 NPM 레지스트리에 없었다 GitHub의 저장소의 마스터 지점에서 원하는 것을 것을 확인한 후, 나는 결국 단지 @apsillers 답변으로, 내 방식 Git URLs as Dependencies을 변경했습니다.