이번 주에는 명령줄 도구인 VShell을 프로덕션 버전으로 출시할 준비를 하고 있습니다. 이 릴리스를 사용하면 사용자는 프로젝트를 로컬로 복제하고 빌드할 필요 없이 npm을 통해 직접 VShell을 설치하고 사용할 수 있습니다. Node.js와 함께 JavaScript로 작성된 이 도구는 배포가 용이하도록 npm에서 호스팅됩니다. 다음은 이 릴리스를 달성하기 위해 제가 따랐던 단계에 대한 자세한 설명입니다.
재현 가능하고 자동화된 빌드를 보장하기 위해 프로젝트 루트에 build.js 스크립트를 만들었습니다. 이 스크립트는 필요한 모든 파일을 dist 폴더에 복사하여 빌드 프로세스를 단순화합니다.
게다가 package.json에서 실행하기 위한 스크립트도 설정했습니다.
"build": "node build.js"
실행하려면 콘솔에 npm run build를 입력하면 됩니다
지금은 파일을 복사하는 간단한 빌드만 보여드리고 싶었는데, 앞으로 UI로 구현한다면 템플릿 번들 스크립트를 바벨로 사용해야 할 것 같습니다.
이전에는 프로젝트 버전을 변경한 후 업데이트하는 것을 잊어버리는 경우가 많았습니다. 이번 릴리스에서는 프로젝트 API의 변경 사항을 명확하게 전달하기 위해 Semantic Versioning을 채택했습니다.
v0.0.1 이후 중요한 업데이트가 있어서 package.json의 버전 필드를 업데이트하여 버전을 v1.0.0으로 설정했습니다. 이 버전은 획기적인 변경 사항과 새로운 기능을 갖춘 안정적인 API를 반영합니다.
버전 업데이트를 GitHub 릴리스와 동기화하기 위해 v1.0.0용 Git 태그를 만들었습니다.
git tag -a v1.0.0 -m "Release version 1.0.0" git push origin --tags
이렇게 하면 Git 저장소에서 릴리스가 제대로 추적됩니다.
VShell을 npm 패키지로 게시하기 위해 package.json의 files 필드를 사용하여 패키지에 포함할 파일을 명시적으로 정의했습니다. 이렇게 하면 게시된 패키지에 필요한 파일과 디렉터리만 포함됩니다.
예:
npm에 VShell을 게시하려면:
이로 인해 사용자는 npm을 통해 VShell을 사용할 수 있게 되었습니다.
GitHub Didabot이 전이적 종속성 교차 생성과 관련된 보안 문제를 신고했습니다. 직접 설치하지 않았기 때문에 다음을 사용했습니다.
npm ls 교차 생성
어떤 패키지가 이에 의존하는지 식별합니다. eslint가 소스인 것을 확인하고 eslint를 최신 버전으로 업데이트하여 문제를 해결했습니다.
또한 npm 사용자에게 명확한 설치 지침을 제공하기 위해 README.md를 업데이트했습니다. 또한 기여자들에게 VShell을 로컬에서 설정하고 실행하는 방법을 안내하기 위해 CONTRIBUTING.md 파일을 개선했습니다.
정확성을 높이기 위해 David Humphrey 교수의 피드백을 반영하여 GROQ 시스템 문서를 확장하고 명확하게 했습니다.
릴리스 프로세스를 간소화하기 위해 새 태그가 푸시될 때마다 npm 게시를 자동화하는 작업을 GitHub Actions 워크플로에 추가했습니다.
워크플로 추가:
git tag -a v1.0.0 -m "Release version 1.0.0" git push origin --tags
주요 기능:
조건부 트리거: 태그(v*.*.*)가 푸시된 경우에만 릴리스 작업이 트리거됩니다.
npm 인증: GitHub Secrets에 저장된 보안 NPM_AUTH_TOKEN을 사용합니다. npm 계정으로 이동하여 액세스 토큰 섹션을 선택하여 이 토큰을 생성할 수 있습니다.
GitHub 릴리스: Softprops/action-gh-release를 사용하여 자동으로 릴리스를 생성합니다.
이러한 단계를 수행하여 VShell의 npm 릴리스를 성공적으로 자동화했습니다. 이제 사용자는 다음을 통해 도구를 쉽게 설치하고 사용할 수 있습니다.
npm install -g vshell
이러한 간소화된 프로세스는 적절한 버전 관리, 종속성 관리, 문서 업데이트와 결합되어 전문적이고 사용자 친화적인 VShell 릴리스를 보장합니다.
위 내용은 VShell: 프로덕션 릴리스 워크플로의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!