Heroku에 Git 하위 디렉토리 배포

6931 단어 nodeherokututorialgit

Heroku의 집에는 없습니다.

Heroku에 앱을 배포하는 것은 충분히 스트레스입니다. 전체 리포지토리를 푸시하여 배포하려는 하위 디렉터리가 있는 경우 좋지 않은 시간을 보낼 수 있습니다.

전체 리포지토리를 배포할 수 없는 이유는 무엇입니까?

글쎄요, 우선 Heroku는 그것을 좋아하지 않으며 다음 오류를 표시하여 그 이유를 정확히 알려줍니다.


당신이 아니라 당신의 빌드팩입니다.

첫 번째 본능은 Heroku의 Dev Center에서 언급한 대로 node.js 서버에 적합한 빌드팩을 수동으로 설정하는 것이었습니다. 그러나 Heroku는 다음과 같이 말합니다.

기본적으로 이러한 빌드팩은 일치 항목이 감지되어 앱을 컴파일하는 데 사용될 때까지 이 순서대로 검색됩니다.

따라서 빌드팩을 수동으로 설정할 필요가 없습니다(어쨌든 그렇게 편집증에 걸렸습니다).

heroku buildpacks:set heroku/nodejs


이제 수동으로 빌드팩을 Node.js로 설정하고 이 나쁜 소년을 Heroku로 푸시하려고 했습니다(물론 커밋한 후). 손가락이 교차


유감이야 친구

운 좋게도 오류는 문제가 무엇인지에 대한 단서를 제공합니다. 이 경우 여러 디렉터리가 있는 저장소를 배포하려는 것 같습니다. Heroku'sDev Center를 다시 보면 다음과 같이 표시됩니다.

Heroku Node.js 지원은 응용 프로그램의 루트 디렉토리에 package.json 파일이 있는 경우에만 적용됩니다.


많이 빨개졌네요...

그래서 내 경우에는 package.json 파일이 있는 하나의 특정 하위 디렉터리를 배포하려고 합니다. 그러나 대신에 package.json 파일이 없고 사실상 Heroku 버그를 만드는 전체 저장소를 배포하려고 합니다.

수정



pls를 무엇을 해야할지 말해 줄 수 있습니까?

확신하는! 모든 Heroku 전제 조건을 완료했다고 가정하여 시작하겠습니다.

npm install -g heroku
heroku login
heroku create
heroku git:remote -a my-app


Heroku가 내 앱에 임의의 이름을 부여하여 변경하기로 결정했습니다.

heroku apps:rename my-new-app-name



이름은 무엇입니까?

이름을 바꾸면 git 리모컨을 업데이트해야 합니다.

heroku git:remote -a my-new-app-name




이제 건초 제작자를 위해.

git subtree push --prefix path/to/subdirectory heroku main



한숨을 쉬다

그것 참 부끄럽 네. 작업 트리의 최상위 수준에서 이 명령을 실행해야 하는 것 같습니다. 몇 cd .. 의 나중에 그리고...


지금까지 잘생겼어...


Heroku 당신은 너무 똑똑 bb


성공!

이제 하위 디렉토리를 Heroku에 성공적으로 배포했습니다! 읽어 주셔서 감사합니다!

추가 크레딧: npm-scripts



아직 읽고 계시다면 감사합니다. 내 앱의 프런트엔드와 백엔드를 변경하고 Heroku에 배포하고 싶다고 가정해 보겠습니다. 글쓰기...

git subtree push --prefix path/to/subdirectory heroku main


...내 취향에 비해 너무 장황하므로 내 백엔드 저장소package.json에 npm 스크립트를 추가하겠습니다.

{
  "scripts": {
    //...
    "build:ui": "rm -rf build && cd ../../part2/phonebook-frontend && npm run build --prod && cp -r build ../../part3/phonebook-backend",
    "deploy": "git subtree push --prefix part3/phonebook-backend heroku main",
    "deploy:full": "npm run build:ui && git add . && git commit -m uibuild && git push && npm run deploy",    
    "logs:prod": "heroku logs --tail"
  }
}


  • 스크립트npm run build:ui는 프런트엔드를 구축한 다음 백엔드 저장소 아래 프로덕션 버전을 복사합니다.
  • npm run deploy 현재 백엔드를 Heroku로 푸시합니다.
  • npm run deploy:full는 두 가지를 결합하고 백엔드 저장소를 업데이트하는 데 필요한 git 명령을 포함합니다.
  • npm run logs:prod는 디버깅에 유용한 heroku 로그를 보여줍니다.

  • 스크립트build:uideploy의 경로는 파일 시스템의 리포지토리 위치에 따라 다릅니다.

    리소스 및 외침


  • Deploying Node JS to Heroku
  • Heroku Buildpacks
  • Mastering Git Subtrees
  • 좋은 웹페이지 즐겨찾기