You can easily support my projects and me via Github sponsors system! You can follow this link for sponsorship https://github.com/sponsors/barbarbar338
NPM bildiğiniz üzere NodeJS kullanıcılarının yaptığı paketleri paylaştığı bir sistem. Burada sizler de kendi paketlerinizi paylaşabiliyorsunuz. Bu yazıyı okuyorsanız zaten NPM ve NodeJS hakkında bilginiz vardır ve muhtemelen çoktan bir NPM paketi paylaşmışsınızdır bile. Ancak eğer bir paketiniz yoksa ve aklınızda da bir paket yapma fikri varsa ve nasıl başlayacağınızı bilmiyorsanız tam da burada paylaşmış olduğum videodan nasıl yapacağınızı öğrenebilirsiniz.
Bildiğiniz üzere GitHub'da Actions dediğimiz bir özellik var. Burada repomuzdaki değişiklikleri takip edip bu değişiklikler sonucunda GitHub'un kendi sanal bilgisayarları üzerinden işlem yaptırabiliyoruz. Kısacası kodunuzu reponuza atıyorsunuz ve GitHub bu değişiklik sonucunda kendi sistemlerinde sizin önceden belirlediğiniz birkaç komutu çalıştırıp ona göre çıktılar oluşturuyor. Biz de bu sistemden faydalanarak NPM paketimizi otomatik olarak güncellemeyi sağlayacağız.
Biraz hızlı geçmek adına Action dosyasını direkt burada vereceğim. İsterseniz direkt bu dosyayı kullanabilirsiniz ancak merak etmeyin, birazdan bu dosyanın ne işe yaradığından ve kurulum için gerekli adımlardan bahsedeceğim.
name: Paketi NPM'ye yükleme
on: [push]
jobs:
build:
name: "Paketi buildleme ve yükleme"
runs-on: ubuntu-latest
if: "contains(github.event.head_commit.message, '(yükle)')"
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: "16.x" # NodeJS versiyon 16 kullandım ancak kendi uygulamanıza uygun olanı da kullanabilirsiniz.
registry-url: "https://registry.npmjs.org"
- run: npm install
- run: npm run build
- run: npm publish
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
Bu dosya geliştirmiş olduğum react-use-lanyard paketinin Action dosyası. Bu dosya sayesinde kodlarımda bir değişiklik yaptığımda ve repoma pushladığımda paketim otomatik buildleniyor ve NPM'ye yükleniyor, harika değil mi?
Şimdi birazcık bu dosyadaki kodlardan bahsedelim.
name: Paketi NPM'ye yükleme
Burası Action'umuzun adı. GitHub'da Actions kısmında bu isim ile görünecek.
on: [push]
Bu kod ise Action'umuzun ne zaman aktifleşeceğini ayarlıyor. Ben Actionumun her push işleminin ardından çalışmasını istiyorum.
jobs:
build:
name: "Paketi buildleme ve yükleme"
runs-on: ubuntu-latest
if: "contains(github.event.head_commit.message, '(yükle)')"
Burada da Action'umuzda yapılacak işlemi tanımladık. İşlemimiz Ubuntu üzerinde birkaç kod çalıştıracağı için runs-on: ubuntu-latest
satırını ekledik. Ayrıca her push işleminde de Action'un çalışmasını istemiyorum. Yalnızda commit mesajımda (yükle)
yazıyorsa çalışmasını istiyorum. Örneğin 🚨 Linter ayarları düzeltildi (yükle)
gibi bir commit mesajı yazarsam Action'umun çalışmasını istiyorum. Bunun için de if: "contains(github.event.head_commit.message, '(yükle)')"
satırını ekledik. Burada commit mesajının içeriğini inceleyip istediğimiz meti barındırıyor mu diye baktık. Eğer barındırıyorsa işlemi gerçekleştirecek.
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: "16.x"
registry-url: "https://registry.npmjs.org"
- run: npm install
- run: npm run build
- run: npm publish
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
Burada ise işlem adımlarını belirttik. İlk olarak sana bilgisayara NodeJS 16 kurmasını istedik. Elbette uygulamanıza uygun olan NodeJS sürümünü kurabilirsiniz. Daha sonra ise paketleri indirmesini, paketi buildlemesini ve paketi NPM'ye yüklemesini söyledik. Ancak bir sıkıntı var. NPM'ye paket yükleyebilmek için bir NPM hesabınız olmalı ve bu hesaba ait bir tokeninizin olması lazım. NPM hesabını ücretsiz bir şekilde açabilirsiniz, ben size token almayı ve bu tokeni reponuza tanıtmayı göstereceğim.
Bu token sayesinde NPM'ye paket yükleyebilir, silebilir veya paketinizi güncelleyebilirsiniz. O yüzden bu tokeni kesinlikle gizli tutmanız lazım ve kimseyle paylaşmamanız lazım. Annenizle bile! Birisi bu tokeni eline geçirirse sizin adınıza her şeyi yapabilir, o yüzden dikkatli olun.
Şimdi bir NPM hesabınızın olduğunu ve hesabınıza giriş yaptığınızı varsayıyorum. NPM'nin sitesine giriş yapın ve ana sayfada profil kısmından Access Tokens
kısmına basın.
Daha sonra aşağıdaki gibi bir sayfayla karşılaşacaksınız (Muhtemelen sizinki boş olacaktır ancak önemli değil). Buradan Generate New Token
seçeneği ile bir Access Token oluşturmamız lazım.
Şimdi ise tokeninize hatırlacağınız bir isim verin ve aşağıdan Publish
seçeneğini seçin. Bu sayede bu tokeni paket paylaşmada kullanabileceğiz. Daha sonra da Generate Token
butonuna basarak tokeninizi oluşturun.
Ve gördüğünüz gibi tokenimiz oluşturuldu. Bu tokeni yalnızca 1 kere görmenize izin veriliyor, o yüzden bir yere kaydetmeyi unutmayın!
Şimdi bu tokeni Action'umuzda kullanabiliriz.
İlk olarak repomuzun ayarlarına gelmemiz ve buradan Secrets
kategorisi altından Actions
sayfasına gelmemiz lazım.
Daha sonra buradan New Repository Secret
seçeneği ile bir Secret
oluşturmamız lazım.
Şimdide secret adını NPM_TOKEN
olarak ayarlayın ve alttaki boşluğa aldığınız tokeni yapıştırdıktan sonra Add Secret
butonuna basarak kaydedin.
Ve her şey hazır! artık paketimiz otomatik olarak paylaşılacak.
Reponuzun ana dizinine .github/workflows/main.yaml
adlı bir dosya oluşturun ve içerisine yukarıda verdiğimiz Action kodlarını yapıştırın. Artık mesaj içeriğinde (yükle)
olan bir commit yaptığınızda paketiniz otomatik olarak NPM'ye yüklenecektir, mükemmel!
Buraya kadar okuduysanız artık yeni bir şey daha biliyorsunuz demektir. Eğer yazı hoşunuza gittiyse arkadaşlarınızla da paylaşmayı unutmayın, teşekkürler! 😼👍