Monorepo 내에서 패키지 게시
5940 단어 opensourcemonorepo
David 최근 공유하고 싶은 monorepo에 대한 좋은 정의를 찾은 link 공유:
A monorepo is a single repository containing multiple distinct projects, with well-defined relationships.
Telescope에는 다음과 같은 기능이 있습니다.
└── src
├── api
├── backend
├── docs
├── mobile
└── web
모든 API, 백엔드, 프론트엔드, 모바일 앱 및 새로운 Docusaurus 문서가 모두 동일한 리포지토리에 있습니다.
우리는 최근에 Turborepo로 전환했고 그 features를 시험해 보기 위해 changed 우리 프로젝트를 린트하는 방식을 가지고 있습니다. 우리는 Telescope의 루트에서 eslint를 실행했지만 이제는 각 프로젝트 내부에 개별
.eslintrc.js
파일이 있고 Turborepo가 모든 것을 관리하도록 합니다.version 1.1 이후, Turborepo 구성은
package.json
에서 자체turbo.json
파일로 이동했습니다.이것은
turbo.json
내부에 lint
명령을 정의하는 pipeline
입니다.{
"pipeline": {
"build": {
"dependsOn": ["^build"]
},
"lint": {
"outputs": []
}
}
}
pnpm turbo run lint
를 실행하면 Turborepo는 pnpm-workspace.yaml
에 정의된 각 패키지를 살펴보고 lint 명령을 실행합니다. 이 프로세스는 캐시를 유지하고 프로젝트의 파일에 변경 사항이 없는 경우 다시 사용하기 때문에 매우 효율적입니다.예를 들어 내가 문서를 변경하면 Turborepo는 문서에서 eslint만 실행하고 이전에 생성된 캐시를 다른 모든 곳에서 사용합니다.
우리는 모든
@senecacdot/eslint-config-telescope
에서 재사용하는 규칙을 포함하는 새로운 .eslintrc.js
패키지를 가지고 있으며 tools
디렉토리 안에 있습니다:└── tools
└── eslint
├── index.js
└── package.json
이 패키지는 npmjs 레지스트리에 대한 published입니다.
.eslintrc.js
파일 내에서 호출하려면 extends
다음을 사용합니다.module.exports = {
extends: '@senecacdot/eslint-config-telescope',
overrides: [
// more rules here
],
};
@senecacdot/eslint-config-telescope
가 monorepo 안에 있기 때문에 pnpm publish 덕분에 패키지 릴리스를 자동화했습니다.npmjs 레지스트리로 릴리스
Telescope의 릴리스를 처리하는 GitHub Actionsworkflow가 있으며 마지막에 다음을 추가했습니다.
- uses: pnpm/[email protected]
with:
version: 6.30.1
- name: NPM Publish
uses: actions/setup-node@v2
with:
node-version: '16.x'
registry-url: 'https://registry.npmjs.org'
cache: 'pnpm'
- run: pnpm install
- run: pnpm -r publish --no-git-checks --access=public
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
여기서 핵심 부분은
pnpm -r publish
입니다. -r
는 재귀를 의미합니다. pnpm은 패키지에 업데이트된 버전이 있는지 확인하기 위해 각각package.json
을 살펴보고 업데이트된 경우 레지스트리에 게시합니다.
Reference
이 문제에 관하여(Monorepo 내에서 패키지 게시), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/menghif/publish-packages-from-within-a-monorepo-3b96텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)