2012-05-22 2 views
10

Herkit에서 호스팅되는 Node.js 웹 사이트가 있는데, git을 사용하여 배포합니다. package.json에서 참조되는 여러 노드 모듈을 사용합니다. 패키지의 새로운 버전을 배포 할 때마다 Heroku가 '새로 고침'하지 못하게하는 방법이 있습니까? package.json이 변경되지 않는 한?Heroku에서 배포 할 때마다 npm 새로 고침을 피하십시오.

참고 : 이것은 '네이티브'모듈에 특히 유용합니다. 컴파일에 약간의 시간이 걸립니다. .js 전용 모듈의 경우 package.json에서 제거하고 git repo에 node_modules/폴더를 추가하는 데 성공했습니다.

+0

동의하면 빌드 캐싱이 약간 유용 할 것입니다. 그러나 나는 그것이 빨리 까다로워 질 수 있다는 것을 이해한다; 캐싱이 잘못된 캐싱보다 나은 것은 아닙니다. –

답변

6

나는 공식 Heroku가 Node.js를 Buildpack의 메인테이너 해요 :

heroku config:set BUILDPACK_URL=https://github.com/ddollar/heroku-buildpack-nodejs

여기에 대답을 참조하십시오.

우리는 위에서 설명한 유스 케이스를 위해 특별히 설계된 캐싱 기능을 지원하는 베타 버전의 새로운 빌드 팩을 제공합니다. 당신은 결국이에게 Heroku의 기본 Node.js를의 buildpack 될 것 https://github.com/heroku/heroku-buildpack-nodejs/tree/diet#about-this-refactor

에서 그것에 대해 자세한 내용을보실 수 있습니다,하지만 당신은 지금 사용하려는 경우 명시 적으로 BUILPACK_URL의 설정 var에 설정해야합니다 :

heroku config:set BUILDPACK_URL=https://github.com/heroku/heroku-buildpack-nodejs#diet -a my-node-app 
git commit -am "fakeout" --allow-empty 
git push heroku 
+0

soooo 빠름 :) 최근에 설정 했으니 지금은 괜찮습니다. – Guard

+1

기본값이 될 것 같습니다 – evilcelery

+3

... 2015 ... heroku가 여전히 모든 종속성을 다시 작성합니까? –

0

당신은 (이하 "새로 고침"적어도 재 다운로드 일부입니다.), 모두의 .js 및 기본 NPM 패키지를 추가하고 여전히이 "새로 고침"피할 수

node_modules/ 디렉토리에 기본 패키지를 포함합니다. Heroku에 배포하면 npm install은 패키지 다운로드를 건너 뜁니다. npm rebuild도 실행됩니다. 네이티브 패키지를 다시 컴파일하는 데 약간의 시간이 걸리지 만, 네이티브 패키지가 많지 않으면 매우 견딜 수 있어야합니다.

시돈 노트 : Heroku doc on what Heroku does when you push a nodejs app.

(!) 참고가 :이 "node and native code modules after a node upgrade 사이에 일어날 수있는 신비 실패 있습니다"때문에npm rebuild이 필요하다.

0

Heroku node.js 빌드 팩을 복제하고 수정하여 rebuild 명령을 제거하십시오.

명령은 현재 여기에서 실행됩니다 : https://github.com/heroku/heroku-buildpack-nodejs/blob/master/bin/compile#L180,하지만 바뀌어야합니다.

당신은 아래에 자신의 repo에 맞게 명령을 수정하여 자신의 buildpack를 사용하는 응용 프로그램을 만들고 실행할 수 있습니다
heroku create --buildpack http://github.com/heroku/heroku-buildpack-nodejs.git

를 또는으로 기존 응용 프로그램의 buildpack을 변경
heroku config:add BUILDPACK_URL=git://github.com/heroku/heroku-buildpack-nodejs.git

관련 문제