GitHub Eylemlerinin gücünden yararlanarak anlamsal yayın kullanarak kapsamlı olmayan bir genel paketin yayınlanmasına ilişkin ayrıntılı talimatlar Gelişen yazılım geliştirme ortamında sürüm tutarlılığını korumak ve sürüm sürecini otomatikleştirmek her zamankinden daha önemli. Girmek : Açık ve yapılandırılmış sürüm oluşturmayı sağlamak için tasarlanmış bir araç. Kapsam dışı genel paketlerden yararlanan geliştiriciler için süreç göz korkutucu görünebilir. Ancak GitHub eylemlerinin gücü parmaklarımızın ucunda olduğundan otomasyon çocuk oyuncağı haline gelir. Anlamsal Sürüm Bu makale, Semantic Release'i iş akışınıza sorunsuz bir şekilde entegre etmek için adım adım talimatlar sağlayan, genel kapsamlı olmayan paketleri kullananlar için özel olarak tasarlanmış ayrıntılı ve kapsamlı bir kılavuz sunmaktadır. Yazılım sürümlerine yönelik kolaylaştırılmış yaklaşımı keşfedin ve keşfedin. Kendimi yarattığımda , onu sorunsuz bir şekilde NPM'ye yayınlamakta engellerle karşılaştım. Doğru konfigürasyonları sağlamak zorlu bir işti. genel paket Bunu başarmak için, halka açık paketlerin doğru şekilde yayınlanmasına yönelik adım adım deneyime bakalım. . NPM İçeriğe Genel Bakış Paketi adlandırın Paket oluştur Paket kaynağı Jetonlar GitHub Eylemleri kurulumu Anlamsal sürüm Kaydetme biçimi Yayınlanan paket Çözüm Paketi adlandırın Paketimizi uygulamaya geçmeden önce ona uygun adı bulmak daha iyidir. Adın önceden alınmadığından emin olmak için kontrol edin ve paketiniz için alın. "Tokky"yi seçtim. Bu noktadan sonra paketin adını ayırtmak imkansızdır. Npm'deki ad için paketi yayınlamanız gerekir. my_package_name Paket oluştur Amaç, içeriği konsola aktaran basit bir paket geliştirmektir. Onu kurabildiğimizden ve çalıştırabildiğimizden emin olmalıyız. Derleme süreci için basit olanı kullanalım . esbuild Bu yazı boyunca paketinin adını kullanacağım. Başlangıç verileriyle dosyasını oluşturalım. tokky package.json mkdir tokky && cd tokky && npm init -y Komutu yürüttükten sonra sistem, proje için şuna benzeyen varsayılan bir dosyası oluşturdu: package.json { "name": "tokky", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "keywords": [], "author": "", "license": "ISC" } Bu kılavuzda dosyası doğru yapılandırmanın sağlanmasında çok önemli bir rol oynamaktadır. Bu noktada paketimizin node versiyonunu belirtelim: package.json echo "v18" > .nvmrc ve belirtilen sürümü aşağıdakilerle etkinleştirin: nvm use dosyası için: README.md echo "# Tokky\n\nA simple zero dependency logger for node js." > README.md Son olarak geliştirme bağımlılıklarını yükleyin: npm i -D esbuild eslint prettier İlk yapılandırmamızda dosyasındaki birkaç önemli noktaya değinmemiz gerekiyor: package.json : Bu, modülün birincil giriş noktasını belirtir. main : Burada modülünüzün sağladığı yürütülebilir dosyaları belirteceksiniz. bin : Bu, paket paketlendiğinde ve daha sonra npm kayıt defterinde yayınlandığında dahil edilecek bir dizi dosya deseni içermelidir. files : Paketimizin herkese açık olması amaçlandığından bunun olarak ayarlandığından emin olun. private false : Bunun için erişim olarak ayarlanmalıdır. publishConfig public Bu yapılandırmalardan sonra dosyanız aşağıdakine benzemelidir: package.json { "name": "tokky", "version": "1.0.0", "description": "Node js logger package", "main": "dist/index.js", "scripts": { "build": "esbuild src/index.js --bundle --platform=node --format=cjs --minify --outfile=dist/index.js", }, "files": [ "dist" ], "bin": { "tokky": "./dist/index.js" }, "keywords": [ "logger", "nodejs", "tokky" ], "private": false, "author": { "name": "Anton Kalik", "email": "antonkalik@gmail.com", "url": "https://idedy.com" }, "publishConfig": { "access": "public" }, "license": "MIT", "engines": { "node": "18.xx" }, "devDependencies": { "esbuild": "^0.19.2", "eslint": "^8.49.0", "prettier": "^3.0.3" } } package.json ilk kurulumdan sonra Ek olarak iki yoksayma dosyası ekleyelim: .idea node_modules dist .gitignore ve npm için: .idea /src/ /node_modules/ /test/ /.nvmrc .github/ .npmignore Son olarak ESLint kurulumumu özetleyeceğim. Ancak paketinizin özel gereksinimlerine göre yapılandırmanın değişebileceğini unutmayın. module.exports = { env: { browser: true, commonjs: true, es2021: true, node: true, }, extends: "eslint:recommended", overrides: [ { env: { node: true, }, files: ["src/**/*.js", ".eslintrc.{js,cjs}"], parserOptions: { sourceType: "script", }, }, ], parserOptions: { ecmaVersion: "latest", }, rules: {}, }; .eslintrc.js yapılandırması Daha sonra GitHub'a gidin ve yeni bir depo oluşturun. Paketinizin adını verin. Sonraki komutları yürüterek devam edin: git init git add . git commit -m "first commit" git branch -M main git remote add origin git@github.com:<your_github_username>/tokky.git git push -u origin main Paket kaynağı Sonra, temel bir uygulama oluşturalım ve onu oluşturmak için ayarlayalım. klasörünün içinde bir dosyası oluşturun ve onu aşağıdaki içerikle doldurun: src index.js #!/usr/bin/env node const os = require('os'); const username = os.userInfo().username; if (process.argv[2] === 'hi') { console.log(`Hello ${username}`); } Paket örneği için basit komut dosyası Konsept basittir: çalıştırıldığında "Merhaba [kullanıcı adı]" görüntülenmelidir. my_package_name hi Bu işlevselliği doğrulamak için aşağıdakileri kullanarak komutu doğrudan deponuzdan yürütün: node src/index.js hi Çıktı beklentilerle uyumluysa kaynağı oluşturmanın zamanı gelmiştir: npm run build Bu komutu başarıyla çalıştırmak, küçültülmüş bir dosyasını içeren bir klasörü oluşturacaktır. index.js dist Jetonlar Sürüm artışlarını belirleyecek ve yayınlama sürecini taahhüt mesajlarına göre yönetecek Semantic Release'i yürütme, ortam değişkenlerinin ( , ) doğru şekilde çalışmasını gerektirir. Tokenlar GitHub sırlarından alınır ve gizli kalmaları sağlanır. GITHUB_TOKEN NPM_TOKEN ayarlamak için buraya gidin: GITHUB_TOKEN https://github.com/settings/tokens Açılır menüyü kullanarak belirteci oluşturun. Yeni kişisel erişim belirtecine (klasik) tıklayın ve izni resimdeki gibi ayarlayın. Paket adınızı aşağıda gösterildiği gibi kullanın: Belirteç değeri oluşturulduktan sonra kopyalayın ve gizli tutun; bunu başkalarıyla paylaşmamak çok önemlidir. Semantic Release CLI için kısa süre içinde ihtiyacımız olacağından bu belirteci geçici olarak güvenli bir şekilde saklayın. oluşturmak için öncelikle bir hesaba ihtiyacınız var . Henüz kayıt olmadıysanız kayıt işlemini gerçekleştirin. Bundan sonra şuraya gidin: NPM_TOKEN npm'nin resmi web sitesi https://www.npmjs.com/settings/<your_user_name>/tokens/new ve "yayınla" seçeneğiyle "klasik" bir token oluşturun. Belirtecin oluşturulan değerini kopyalayın ve GitHub gizli dizilerine gidin: https://github.com/<your_user_name>/<your_repo_name>/settings/secrets/actions/new ve depo sırlarına olarak yeni sır koyun: NPM_TOKEN Sırlarımız artık ayarlandığında GitHub Eylemlerini yapılandırabiliriz. GitHub Eylemleri kurulumu Süreçlerimizi otomatikleştirmek için GitHub Actions'ı kullanacağız. Bu, GitHub'a entegre edilmiş bir aracıdır. Geliştiricilerin uygulama oluşturma, test etme ve dağıtma gibi iş akışlarını doğrudan GitHub depolarından otomatikleştirmesine olanak tanır. Kullanıcılar, YAML dosyalarındaki iş akışlarını tanımlayarak, itme ve çekme istekleri veya planlanmış zamanlar gibi belirli olaylara dayalı eylemleri tetikleyebilir, böylece yazılım geliştirme sürecini daha verimli ve otomatik hale getirebilirler. CI/CD Başlamak için projenizin kökünde bir dizini oluşturun. Bu dizin içinde bir alt klasörü oluşturun. .github workflows Burada, adlı yapılandırma dosyamızı oluşturun ve onu aşağıdaki içerikle doldurun: release.yml name: Release package on: push: branches: - main jobs: release: runs-on: ubuntu-latest if: ${{ github.ref == 'refs/heads/main' }} steps: - name: Checkout uses: actions/checkout@v3 - name: Set up Node.js uses: actions/setup-node@v3 with: node-version: "18" - name: Install dependencies run: npm ci - name: Build run: npm run build - name: Semantic Release run: npm run semantic-release env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} NPM_TOKEN: ${{ secrets.NPM_TOKEN }} Bu iş akışı ana dalda bir push olayını tetikler. İşi GitHub'ın sunduğu en son Ubuntu sanal makinesinde çalıştıracak şekilde yapılandırılmıştır. Her işi derinlemesine incelemek zorunlu olmasa da, bazı spesifik işleri öne çıkaralım. Sonlara doğru, belirlenen belirteçleri kullanarak nasıl çağırdığımıza dikkat edin. npm run semantic-release Anlamsal sürüm Otomatik sürüm süreci için Semantic Release kullanacağız. Bu araç, taahhüt mesajı semantiğine dayalı olarak sürüm oluşturma ve paket yayınlamayı yönetir. Sürüm artışlarını (büyük, küçük veya yama) belirlemek için Anlamsal Sürüm Oluşturma (SemVer) kurallarına uyar. Onaylama mesajlarını analiz ederek manuel sürüm oluşturma adımlarını ortadan kaldırır, tutarlı sürüm numaraları sağlar ve sürüm sürecini kolaylaştırır. Hadi ayarlayalım. Bu kurulum için kullanacağız ve deponuzda çalıştırın: bu GitHub kodu npx semantic-release-cli setup Ve şu soruları takip edin: % npx semantic-release-cli setup ? What is your npm registry? https://registry.npmjs.org/ ? What is your npm username? your_user_name ? What is your npm password? [hidden] ? What is your NPM two-factor authentication code? 00000000 ? Provide a GitHub Personal Access Token (create a token at https://github.com/s ettings/tokens/new?scopes=repo) ghp_your_token_here ? What CI are you using? Github Actions Kişisel Simgenize zaten sahip olmalısınız. İstendiğinde girmeniz yeterlidir. Benzer şekilde, oluşturduğumuz GitHub Eylemleri, daha önce depo sırlarında oluşturduğumuz kullanacaktır. Şimdi dosyanızı kontrol ederseniz sürüm şu şekilde görünecektir: NPM_TOKEN package.json "version": "0.0.0-development", ve yeni komut dosyası: "semantic-release": "semantic-release" Semantic Release CLI tarafından otomatik olarak oluşturulmuştur. Bu betiği aşağıdaki gibi geliştirmemiz gerekecek: "semantic-release": "semantic-release --branches main" Bu da yayınların sadece ana şubeden yapılacağını gösteriyor. Ayrıca Semantic Release, dosyanızdaki alanını temel alan bir açıklama oluşturur. Bu alan paketin kaynak kodunun konumu hakkında ayrıntılar sunar. package.json repository "repository": { "type": "git", "url": "https://github.com/<your_github_username>/your_github_repo.git" } Şimdi tüm değişikliklerimizi şununla aktaralım: git add . && git commit -m "semantic release" && git push Kaydetme biçimi Semantic Release, sürüm artışının türünü (majör, minör veya yama) belirlemek ve değişiklik günlükleri oluşturmak için yapılandırılmış taahhüt mesajları geleneğine dayanır. Bu taahhüt sözleşmesine genellikle “Geleneksel Taahhütler” formatı denir. Bu yapılandırma için birkaç eklentiye ihtiyacımız olacak. dosyanızın aşağıdaki içeriği içerdiğinden emin olun: package.json "release": { "branches": [ { "name": "main" } ], "plugins": [ [ "@semantic-release/commit-analyzer", { "releaseRules": [ { "type": "feat", "release": "minor" }, { "type": "fix", "release": "patch" }, { "type": "refactor", "release": "patch" }, { "type": "build", "release": "patch" }, { "type": "chore", "release": "patch" }, { "type": "minor", "release": "patch" } ] } ], "@semantic-release/release-notes-generator", "@semantic-release/npm", "@semantic-release/github", [ "@semantic-release/changelog", { "changelogFile": "CHANGELOG.md" } ] ] } paket.json Kurulum taahhüt formatı aracı için kullanacağız . Yüklemek için şu komutu izleyin: taahhüt etmek npx commitizen init cz-conventional-changelog --save-dev --save-exact Bu komut birkaç dakika sürecektir. Ardından dosyanızı yeni bir komut dosyasıyla güncelleyin: package.json "scripts": { // ... "commit": "cz" }, ve bu betiği kullanmanın zamanı geldi. , ardından çalıştırın ve taahhüdünüz için gerekli ayrıntıları sağlayın. git add . npm run commit İşte neye benziyor: ? Select the type of change that you're committing: feat: A new feature ? What is the scope of this change (eg component or file name): (press enter to skip) commit ? Write a short, imperative tense description of the change (max 86 chars): (14) add commitizen ? Provide a longer description of the change: (press enter to skip) ? Are there any breaking changes? No ? Does this change affect any open issues? No Bundan sonra yapın. git push GitHub eylemlerinde, otomatik taahhüt mesajı süreci için geri kalan paketleri hala kurmadığımız için taahhütümüzün başarısız olduğunu göreceksiniz. npm i -D @semantic-release/commit-analyzer @semantic-release/release-notes-generator @semantic-release/npm @semantic-release/changelog adresine gidin ve GitHub eylemlerinin hem okuma hem de yazmasına izin verecek şekilde izinleri yapılandırın. Çoğu referansta sıklıkla gözden kaçırılan önemli bir adım, iş akışı izinlerinin ayarlanmasıdır. https://github.com/<your_user_name>/tokky/settings/actions Sonra, işleri biraz değiştirelim. Belirli bir anahtar kelime olan ile ve ardından mesajınızla taahhütte bulunun. feat: git add . && git commit -m "feat: my feature commit" && git push içindeki hatırlıyor musunuz? Bu kurallar, paket sürümümüzün sürümünü nasıl artıracağımızı belirler. Bunu yerine getirdiğinizde, , , vb. gibi belirli anahtar kelimeleri kullanarak bir çekme isteği oluşturabilirsiniz. Bu çekme isteği onaylandıktan ve ardından ana dalla birleştirildikten sonra bir tetikleyici başlatılır. Bu tetikleyici daha sonra GitHub eylemini etkinleştirir, sürüm sürecini otomatikleştirir ve paketinizin sorunsuz bir şekilde güncellenmesini sağlar. package.json releaseRules feat fix refactor Yayınlanan paket Paket başarıyla yayınlandı ve verimlilik amacıyla tüm süreç otomatikleştirildi. Yayını onaylamak için npm ayarlarınıza gidin ve paketler bölümüne bakın; orada yeni yayınlanan paketinizi bulacaksınız. https://www.npmjs.com/settings/<your_user_name>/packages Artık gibi basit bir komutla geliştirme testlerimizin sonuçlarını anında görebilirsiniz. Ayrıca paket, komutu kullanılarak genel olarak kurulabilir. npx your_package_name hi npm i -g your_package_name Çözüm Bu makale boyunca gördüğümüz gibi, ilk kurulumlar zorluklarla dolu olsa da ödül, akıcı ve tutarlı bir sürüm süreci oluşturmaktır. GitHub Eylemlerinden yararlanmak, bu karmaşıklıkları basitleştirerek geliştiricilerin lojistik karmaşıklıklar yerine kod kalitesine odaklanabilmesini sağlar. İster herkese açık paketlerle yolculuğunuza yeni başlıyor olun ister yayınlama çalışmalarınızda aksaklıklarla karşılaşmış olun, yapılandırılmış, otomatikleştirilmiş bir iş akışını benimsemenin yadsınamaz bir değeri vardır. Semantic Release'i entegre ederek tutarlı sürüm oluşturmayı garantiliyor ve yazılım geliştirmede ileriye dönük bir yaklaşımı destekliyorsunuz. Sorunsuz yayıncılığa, daha az baş ağrısına ve dijital dünyamızı ileriye taşıyan kodu mükemmelleştirmek için daha fazla zaman harcamaya hazırız. GitHub Eylemlerinde hem hem de uygun izinlerin verilmesinin önemli olduğunu unutmayın. Ek olarak dosyanız, erişimine yönelik ayarlarla doğru şekilde yapılandırılmalı ve yapılandırmanın olarak ayarlandığından emin olunmalıdır. Herhangi bir sorunla karşılaşırsanız veya görüşleriniz varsa, lütfen yorum yapmaktan çekinmeyin. NPM_TOKEN GITHUB_TOKEN package.json publishConfig private false Referanslar Depo: Semantik Sürüm CLI'si: Taahhüt: https://github.com/antonkalik/tokky https://github.com/semantic-release/cli https://github.com/commitizen/cz-cli da yayınlandı. Burada Sayesinde Harper Pazar Ana görsel için Unsplash'tan.