Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu makalede Azure Pipelines'ın JavaScript uygulamalarıyla nasıl çalıştığı açıklanmaktadır. Microsoft tarafından barındırılan aracılar npm, Node.js, Yarn ve Gulp gibi yaygın JavaScript derleme, test ve dağıtım araçlarını herhangi bir altyapıyı ayarlamanıza gerek kalmadan önceden yükleyin. Kendi kendine barındırılan aracıları da yapılandırabilirsiniz.
JavaScript için hızlı bir işlem hattı oluşturmak için bkz. JavaScript hızlı başlangıcı.
Node.js araç yükleyicileri
Önceden yüklenmemiş Node.js ve npm sürümlerini yüklemek veya araçları kendi ev sahipliğini yaptığınız aracılara yüklemek için:
- npm için "pipeline" üzerinde
npm i -g npm@version-numberkomutunu çalıştırın. - Node.jsiçin, işlem hattınıza Node.js ekosistemi v1 (UseNode@1) kullan görevini ekleyin.
Belirli bir Node.js sürümünü yüklemek için azure-pipelines.yml dosyanıza aşağıdaki kodu ekleyin:
- task: UseNode@1
inputs:
version: '16.x' # replace with the version you need
Not
Bu görev, işlem hattı her çalıştığında daha yeni bir küçük sürüme güncelleme işlemi için önemli bir süre gerektirebilir. Microsoft tarafından barındırılan aracılar düzenli olarak güncelleştirilir, bu nedenle bu görevi yalnızca önceden yüklenmemiş belirli Node sürümlerini yüklemek için kullanın. Microsoft tarafından barındırılan aracılara hangi Node.js ve npm sürümlerinin önceden yüklendiğini öğrenmek için bkz. Yazılım.
Birden çok düğüm sürümü kullanma
Uygulamanızı Node.js'in birden çok sürümünde derlemek ve test etmek için bir stratejiyle Node.js matrix görevini kullanabilirsiniz. Daha fazla bilgi için bkz . Çok işli yapılandırma.
pool:
vmImage: 'ubuntu-latest'
strategy:
matrix:
node_16_x:
node_version: 16.x
node_13_x:
node_version: 18.x
steps:
- task: UseNode@1
inputs:
version: $(node_version)
- script: npm install
Bağımlılık aracı kurulumu
Proje package.json veya package-lock.json dosyanızda geliştirme bağımlılık araçlarınız varsa npm aracılığıyla araçları ve bağımlılıkları yükleyin. Proje dosyası, derleme aracısı üzerinde bulunan diğer sürümlerden bağımsız olarak araçların tam sürümünü tanımlar.
Bu araçları derleme aracınıza yüklemek için işlem hattınızda bir betik, npm görevi veya komut satırı görevi kullanın.
Betik kullanmak için:
- script: npm install --only=dev
npm görevini kullanmak için:
- task: Npm@1
inputs:
command: 'install'
Bu şekilde yüklediğiniz araçlar, PATH çözünürlüğündeki araçları algılayan npm npx paket çalıştırıcısını kullanır. Aşağıdaki örnek, test çalıştırıcısını mocha çağırır ve aracılığıyla npm install -ggenel olarak yüklenen sürüm yerine geliştirme bağımlılığı sürümünü kullanır.
- script: npx mocha
Projenizin package.json dosyasında geliştirme bağımlılıkları olarak ayarlanmamış araçları yüklemek için, işlem hattınızdaki bir betikten npm install -g'i çağrısını yapın. Aşağıdaki örnek, kullanarak Angular CLI'nin npm en son sürümünü yükler. İşlem hattındaki diğer betikler daha sonra Angular ng komutlarını kullanabilir.
- script: npm install -g @angular/cli
Not
Microsoft tarafından barındırılan Linux aracılarında komutunun sudobaşına gibi sudo npm install -gyazın.
Bu araç yükleme görevleri, işlem hattı her çalıştığında çalışır, bu yüzden derleme sürelerine olan etkilerine dikkat etmeniz önemlidir. Ek yük derleme performansını ciddi şekilde etkiliyorsa, ihtiyacınız olan araç sürümleriyle önceden yapılandırılmış kendi sunucularınızda barındırılan aracıları kullanmayı göz önünde bulundurun.
Not
Bu araç yükleme görevleri, işlem hattı her çalıştığında çalışır, bu yüzden derleme sürelerine olan etkilerine dikkat etmeniz önemlidir.
Bağımlılık paketi indirmeleri
Yarn veya Azure Artifacts'i kullanarak genel npm kayıt defterinden veya *.npmrc dosyasında belirttiğiniz özel bir npm kayıt defterinden paket indirebilirsiniz. Bir npm kayıt defteri belirtmek için url'sini kod deponuzdaki *.npmrc dosyasına ekleyin.
npm kullanma
npm kullanarak işlem hattınızdaki derleme paketlerini aşağıdaki yollarla indirebilirsiniz:
- Kimlik doğrulaması olmadan paketleri indirmenin en basit yolu için doğrudan komutunu çalıştırın
npm install. - Kimliği doğrulanmış bir kayıt defteri kullanmak için npm görevini ekleyin.
-
npm install'yu Gulp, Grunt veya Maven görev çalıştırıcılarının içinden çalıştırmak için npm authenticate görevini kullanın.
Not
Npm akışınız kimlik doğrulaması kullanıyorsa, kimlik bilgilerini yönetmek için Azure DevOps Projesi ayarlarındakiHizmetler sekmesinde bir npm hizmet bağlantısı oluşturmanız gerekir.
Npm paketlerini doğrudan yüklemek için azure-pipelines.yml'da aşağıdaki betiği kullanın. tr-TR: Derleme aracınızın geliştirme bağımlılıklarına ihtiyacı yoksa, build sürelerini hızlandırmak için --only=prod seçeneğini npm install'ye ekleyebilirsiniz.
- script: npm install --only=prod
*.npmrc dosyanızda belirtilen özel bir kayıt defterini kullanmak için Npm@1 görevini azure-pipelines.yml dosyasına ekleyin.
- task: Npm@1
inputs:
customEndpoint: <Name of npm service connection>
Gulp gibi görev çalıştırıcıları aracılığıyla npm komutlarına kayıt defteri kimlik bilgilerini geçirmek için, görev çalıştırıcısını çağırmadan önce bu görevi npmAuthenticate@0 dosyasına ekleyin.
- task: npmAuthenticate@0
inputs:
customEndpoint: <Name of npm service connection>
Not
Microsoft tarafından barındırılan aracılar her derlemede yeni bir makine kullanır. Bağımlılıkların geri yüklenmesi önemli ölçüde zaman alabilir. Sorunu azaltmak için Azure Artifacts'i veya paket önbelleğine sahip kendinizin barındırdığı bir aracı kullanabilirsiniz.
Npm kayıt defterinden paketleri geri yüklerken bağlantı sorunları nedeniyle derlemeleriniz zaman zaman başarısız olursa, paketleri önbelleğe almak için yukarı akış kaynaklarıyla Azure Artifacts'i kullanabilirsiniz. Azure Artifacts, normalde Proje Koleksiyonu Derleme Hizmeti hesabından türetilen işlem hattının kimlik bilgilerini otomatik olarak kullanır.
Not
Bağımlılıkların geri yüklenmesi önemli ölçüde zaman alabilir. Sorunu azaltmak için Azure Artifacts'i veya paket önbelleğine sahip kendinizin barındırdığı bir aracı kullanabilirsiniz.
Npm kayıt defterinden paketleri geri yüklerken bağlantı sorunları nedeniyle derlemeleriniz zaman zaman başarısız olursa, paketleri önbelleğe almak için yukarı akış kaynaklarıyla Azure Artifacts'i kullanabilirsiniz. Azure Artifacts, normalde Proje Koleksiyonu Derleme Hizmeti hesabından türetilen işlem hattının kimlik bilgilerini otomatik olarak kullanır.
Yarn kullanma
Bağımlılıkları geri yüklemek için Yarn'ı yüklemek için bir betik kullanın. Yarn, Microsoft tarafından barındırılan bazı aracılara önceden yüklenmiştir. Yarn'ı diğer araçlar gibi kendinize ait barındırılan aracılara yükleyebilir ve yapılandırabilirsiniz.
- script: yarn install
Yarn'ı çağırmak için işlem hattınızda CLI veya Bash görevini de kullanabilirsiniz.
JavaScript derleyicileri
JavaScript uygulamaları, kaynak kodu Node.js çalışma zamanı veya web tarayıcılarında kullanılabilen sürümlere dönüştürmek için Babel ve TypeScripttsc derleyicisi gibi derleyicileri kullanır. Proje package.json dosyanızda derleyicinizi çalıştırmak için ayarlanmış bir betik nesneniz varsa, bunu işlem hattınızda çağırabilirsiniz.
- script: npm run compile
Ayrıca bir betik kullanarak derleyicileri doğrudan işlem hattından çağırabilirsiniz. Bu komutlar kopyalanan kaynak kodu deposunun kökünden çalıştırılır.
- script: tsc --target ES6 --strict true --project tsconfigs/production.json
Projeniz package.jsonbir derleme betiği tanımlıyorsa npm görevini kullanarak kodu oluşturabilirsiniz. Derleme betiği tanımlamazsanız bash görevini kullanarak kodunuzu derleyebilirsiniz.
Birim testi
İşlem hatlarınızı JavaScript testlerinizi çalıştıracak şekilde yapılandırarak sonuçları JUnit XML biçiminde üretmelerini sağlayabilirsiniz. Ardından , Test sonuçlarını yayımla görevini kullanarak sonuçları yayımlayabilirsiniz.
Test çerçeveniz JUnit çıkışını desteklemiyorsa , mocha-junit-reporter gibi bir iş ortağı raporlama modülü aracılığıyla destek ekleyin. Test betiğinizi JUnit muhabirini kullanacak şekilde güncelleştirebilir veya muhabir komut satırı seçeneklerini destekliyorsa bu seçenekleri görev tanımına geçirebilirsiniz.
Aşağıdaki tabloda, XML sonuçları üretmek için en yaygın kullanılan test çalıştırıcıları ve kullanabileceğiniz muhabirler listelenir:
| Test çalıştırıcısı | XML raporları için muhabirler |
|---|---|
| Mocha |
mocha-junit-reporter cypress-multi-reporters |
| Yasemin | yasemin-muhabirler |
| Jest |
jest-junit jest-junit-reporter |
| Karma | karma-junit-reporter |
| Ava | tap-xunit |
Aşağıdaki örnekte mocha-junit-reporter kullanılır ve doğrudan bir betik kullanılarak çağrılırmocha test. Bu betik JUnit XML çıkışını ./test-results.xmlvarsayılan konumunda üretir.
- script: mocha test --reporter mocha-junit-reporter
Proje test betiği, package.json dosyanızda tanımladıysanız, npm test kullanarak çağırabilirsiniz.
- script: npm test
Test sonuçlarını yayımlama
Test sonuçlarını yayımlamak için Test sonuçlarını yayımla görevini kullanın.
- task: PublishTestResults@2
condition: succeededOrFailed()
inputs:
testRunner: JUnit
testResultsFiles: '**/test-results.xml'
Kod kapsamı sonuçlarını yayımlama
Test betikleriniz İstanbul gibi bir kod kapsamı aracı çalıştırıyorsa Kod kapsamı sonuçlarını yayımla görevini ekleyin. Daha sonra derleme özetinde kapsam ölçümlerini görebilir ve daha fazla analiz için HTML raporlarını indirebilirsiniz.
Görev, Cobertura veya JaCoCo raporlama çıktısını bekler. Kod kapsamı aracınızın doğru çıkışı oluşturmak için gerekli seçeneklerle çalıştığından emin olun, örneğin --report cobertura.
Aşağıdaki örnekte, İstanbul komut satırı arayüzü nyc ile birlikte mocha-junit-reporter kullanılır ve npm test çağrılır.
- script: |
nyc --reporter=cobertura --reporter=html \
npm test -- --reporter mocha-junit-reporter --reporter-options mochaFile=./test-results.xml
displayName: 'Build code coverage report'
- task: PublishCodeCoverageResults@2
inputs:
summaryFileLocation: '$(System.DefaultWorkingDirectory)/**/*coverage.xml'
Uçtan uca tarayıcı testi
İşlem hattınız , protractor veya Karma gibi araçları kullanarak testleri başsız tarayıcılarda çalıştırabilir ve ardından test sonuçlarını yayımlayabilir. Tarayıcı test ve yayımlama sonuçlarını yapılandırmak için şu adımları izleyin:
- Yapı aracısına, Chrome veya Firefox gibi başsız bir tarayıcı test sürücüsü veya PhantomJS gibi bir tarayıcı simülasyon aracı yükleyin.
- Test çerçevenizi, aracın belgelerine göre başsız tarayıcınızı veya sürücü seçeneğinizi kullanacak şekilde yapılandırın.
- Test çerçevenizi genellikle bir raporlayıcı eklenti veya yapılandırma ile JUnit biçimli test sonuçlarını çıktısı olarak oluşturacak şekilde yapılandırın.
- Başsız tarayıcı örneklerini başlatmak için bir betik veya CLI görevi ekleyin.
- Birim testlerinizle birlikte işlem hattı aşamalarında uçtan uca testleri çalıştırın.
- Aynı Test sonuçlarını yayımla görevini kullanarak, sonuçlarınızı birim testlerinizle birlikte yayımlayın.
Paketleme ve teslimat
Uygulamanızı derleyip test ettikten sonra şunları yapabilirsiniz:
- Derleme çıkışını Azure Pipelines'a yükleyin.
- Npm veya Maven paketi oluşturun ve yayımlayın.
- Derleme çıkışını bir web uygulamasına dağıtım için ZIP arşivinde paketleyin.
Azure Pipelines'da dosya yayımlama
Çalışma dizininin tamamını karşıya yüklemek için derleme yapıtlarını yayımla görevini azure-pipelines.yml dosyanıza ekleyin.
- task: PublishBuildArtifacts@1
inputs:
PathtoPublish: '$(System.DefaultWorkingDirectory)'
Dosyaların bir alt kümesini karşıya yüklemek için, önce gerekli dosyaları çalışma dizininden Dosyaları kopyala göreviyle bir hazırlama dizinine kopyalayın ve ardından Derleme yapıtlarını yayımla görevini kullanın.
- task: CopyFiles@2
inputs:
SourceFolder: '$(System.DefaultWorkingDirectory)'
Contents: |
**\*.js
package.json
TargetFolder: '$(Build.ArtifactStagingDirectory)'
- task: PublishBuildArtifacts@1
Npm kayıt defterinde modül yayımlama
Projenizin çıktısı diğer projelerin kullanması için bir npm modülse ve bir web uygulaması değilse, modülü yerel bir kayıt defterinde veya genel npm kayıt defterinde yayımlamak için npm görevini kullanın. Her yayımladığınızda benzersiz bir ad/sürüm bileşimi sağlayın.
Aşağıdaki örnek, npm genel kayıt defterine yayınlamak için betiği kullanır. Örnekte , npm sürümü gibi sürüm bilgilerini sürüm denetimindeki birpackage.json dosyası aracılığıyla yönettiğiniz varsayılır.
- script: npm publish
Aşağıdaki örnek, deponuzun *.npmrc dosyasında tanımlanan özel bir kayıt defterinde yayımlar. Derleme çalıştırılırken bağlantıya kimlik doğrulaması kimlik bilgilerini eklemek için bir npm hizmet bağlantısı ayarlayın.
- task: Npm@1
inputs:
command: publish
publishRegistry: useExternalRegistry
publishEndpoint: https://my.npmregistry.com
Aşağıdaki örnek, modülü bir Azure DevOps Services paket yönetim akışında yayımlar.
- task: Npm@1
inputs:
command: publish
publishRegistry: useFeed
publishFeed: https://my.npmregistry.com
Npm paketlerini sürüm oluşturma ve yayımlama hakkında daha fazla bilgi için bkz. Npm paketlerini yayımlama ve Derleme işleminin bir parçası olarak npm paketlerimi nasıl sürümleyebilirim?
Web uygulamasını paketleme ve dağıtma
Ara çıkışları ve bağımlılıkları olan tüm modülleri dağıtıma hazır statik varlıklar halinde paketlemek için uygulamaları paketleyebilirsiniz. Webpack veya Angular CLI ng derlemesi gibi bir aracı çalıştırmak için derleme ve testten sonra işlem hattı aşaması ekleyin.
Aşağıdaki örnek öğesini çağırır webpack. Bu işlemin çalışması içinpackage.jsonproje dosyanızda geliştirme bağımlılığı olarak webpack emin olun. Projenizin kök klasöründe bir webpack dosyanız olmadığı sürece bu betik varsayılan yapılandırmayla çalışır.
- script: webpack
Aşağıdaki örnek, proje npm run build dosyasında tanımlanan build betik nesnesini çağırmak için kullanır. Projenizde betik nesnesini kullanmak, derleme mantığını kaynak koda ve işlem hattı dışına taşır.
- script: npm run build
Ayrıca, işlem hattınızdaki CLI veya Bash görevini kullanarak webpack veya Angular'ın ng build gibi paketleme araçlarını çağırabilirsiniz.
Bir web uygulamasında yayımlamaya hazır *.zip dosya arşivi oluşturmak için Dosyaları arşivle görevini kullanın.
- task: ArchiveFiles@2
inputs:
rootFolderOrFile: '$(System.DefaultWorkingDirectory)'
includeRootFolder: false
Bu arşivi bir web uygulamasında yayımlamak için bkz. Azure Pipelines kullanarak Azure App Service'e dağıtma.
JavaScript çerçeveleri
Çeşitli JavaScript çerçevelerini desteklemek için işlem hattınıza paket yükleyebilirsiniz.
Angular
Angular uygulamaları için, , ng testve ng buildgibi ng e2eAngular'a özgü komutları çalıştırabilirsiniz. İşlem hattınızda Angular CLI komutlarını kullanmak için derleme aracısına angular/cli npm paketini yükleyin.
- script: |
npm install -g @angular/cli
npm install
ng build --prod
Not
Microsoft tarafından barındırılan Linux aracılarında komutunun sudobaşına gibi sudo npm install -gyazın.
İşlem hattınızda bir tarayıcının çalıştırılmasını gerektiren testlerde (örneğin, Karma'yı komutuyla ng test çalıştırmak) standart tarayıcı yerine başsız bir tarayıcı kullanın. Angular başlangıç uygulamasında:
-
browserskarma.conf.js proje dosyanızdaki girdiyibrowsers: ['Chrome']olarakbrowsers: ['ChromeHeadless']değiştirin. -
singleRunkarma.conf.js proje dosyanızdaki girdiyifalseolaraktruedeğiştirin. Bu değişiklik Karma işleminin çalıştıktan sonra durmasını sağlamaya yardımcı olur.
React ve Vue
React ve Vue uygulamalarının tüm bağımlılıkları package.json dosyanızda yakalanır.
azure-pipelines.yml dosyanız standart npm betikleri içerir.
- script: |
npm install
displayName: 'npm install'
- script: |
npm run build
displayName: 'npm build'
Derleme dosyaları yeni bir klasörde, Vue için dist veya React için build bulunuyor. Aşağıdaki örnek, www yayına hazır bir artefakt oluşturur. İşlem hattı Node.jskullan , Dosya kopyala ve Derleme yapıtlarını yayımla görevlerini kullanır.
trigger:
- main
pool:
vmImage: 'ubuntu-latest'
steps:
- task: UseNode@1
inputs:
version: '16.x'
displayName: 'Install Node.js'
- script: npm install
displayName: 'npm install'
- script: npm run build
displayName: 'npm build'
- task: CopyFiles@2
inputs:
Contents: 'build/**' # Pull the build directory (React)
TargetFolder: '$(Build.ArtifactStagingDirectory)'
- task: PublishBuildArtifacts@1
inputs:
PathtoPublish: $(Build.ArtifactStagingDirectory) # dist or build files
ArtifactName: 'www' # output artifact named www
Uygulamayı yayınlamak için, yayın görevinizi dist veya build bağımlılığına işaret edin ve Azure Web App görevini kullanın.
Webpack
Webpack yapılandırma dosyasını kullanarak Babel veya TypeScript gibi bir derleyici belirtebilir, JavaScript XML (JSX) veya TypeScript'i düz JavaScript'e çevirebilir ve uygulamanızı paketleyebilirsiniz.
- script: |
npm install webpack webpack-cli --save-dev
npx webpack --config webpack.config.js
Görev çalıştırıcıları oluşturma
JavaScript uygulamaları derlemek ve test etmek için gulp veya Grunt'ı görev çalıştırıcıları olarak kullanmak yaygın bir durumdur.
Gulp
Gulp, Microsoft tarafından barındırılan aracılara önceden yüklenmiştir.
YAML işlem hattı dosyasında komutunu çalıştırabilirsiniz gulp .
- script: gulp # add any needed options
gulpfile.js dosyanızdaki adımlar npm kayıt defteriyle kimlik doğrulaması gerektiriyorsa npm kimlik doğrulama görevini ekleyin.
- task: npmAuthenticate@0
inputs:
customEndpoint: <Name of npm service connection>
- script: gulp
JUnit veya xUnit test sonuçlarını sunucuda yayımlamak için Test sonuçlarını yayımla görevini ekleyin.
- task: PublishTestResults@2
inputs:
testResultsFiles: '**/TEST-RESULTS.xml'
testRunTitle: 'Test results for JavaScript using gulp'
Kod kapsamı sonuçlarını sunucuda yayımlamak için Kod kapsamı sonuçlarını yayımla görevini ekleyin. Kapsam ölçümlerini derleme özetinde bulabilir ve daha fazla analiz için HTML raporlarını indirebilirsiniz.
- task: PublishCodeCoverageResults@1
inputs:
codeCoverageTool: Cobertura
summaryFileLocation: '$(System.DefaultWorkingDirectory)/**/*coverage.xml'
reportDirectory: '$(System.DefaultWorkingDirectory)/**/coverage'
Grunt
Grunt, Microsoft tarafından barındırılan aracılara önceden yüklenmiştir.
YAML dosyasında komutunu çalıştırabilirsiniz grunt .
- script: grunt # add any needed options
Gruntfile.js dosyanızdaki adımlar npm kayıt defteriyle kimlik doğrulaması gerektiriyorsa npm kimlik doğrulama görevini ekleyin.
- task: npmAuthenticate@0
inputs:
customEndpoint: <Name of npm service connection>
- script: grunt
Sorun giderme
Projenizi geliştirme makinenizde derleyebilir ancak Azure Pipelines'da derleyemezseniz aşağıdaki olası nedenleri ve düzeltici eylemleri keşfedin.
geliştirme makinenizdeki Node.js sürümlerinin ve görev çalıştırıcısının aracıdakilerle eşleşip eşleşmediğini denetleyin.
Aracıda yüklü sürümleri denetlemek için
node --versiongibi komut satırı betiklerini işlem hattınıza ekleyebilirsiniz. Aracıya aynı sürümü yüklemek içinUse Node.jsgörevini kullanın veya araç sürümlerini güncelleştirmek içinnpm installkomutlarını çalıştırın.Paketleri geri yüklerken derlemeleriniz zaman zaman başarısız olursa npm kayıt defterinde sorunlar vardır veya Azure veri merkezi ile kayıt defteri arasında ağ sorunları vardır. Azure Artifacts'i npm kayıt defteriyle yukarı akış kaynağı olarak kullanmanın derlemelerinizin güvenilirliğini artırıp artırmadığını keşfedin.
Node.jsfarklı sürümlerini yönetmek için kullanıyorsanız
nvmbunun yerine Node.js kullan (UseNode@1) görevine geçmeyi göz önünde bulundurun.nvm, macOS görüntüsünde geçmiş nedenlerle yüklenmiştir. kabuk diğer adlarını ekleyip değiştirerek birden çok Node.js sürümünü yönetir; bu da Azure Pipelines'ın her görevi yeni bir işlemde çalıştırma biçimiyle uyumsuzluk yaratır. Daha fazla bilgi için İşlem hattı çalıştırmaları'na bakın.Use Node.jsmodeli bu görev doğru şekilde işler. Ancak işiniz `nvm` kullanmayı gerektiriyorsa, her işlem hattının başına aşağıdaki betik eklenebilir:steps: - bash: | NODE_VERSION=16 # or your preferred version npm config delete prefix # avoid a warning . ${NVM_DIR}/nvm.sh nvm use ${NODE_VERSION} nvm alias default ${NODE_VERSION} VERSION_PATH="$(nvm_version_path ${NODE_VERSION})" echo "##vso[task.prependPath]$VERSION_PATH"Ardından ve diğer komut satırı araçları işlem
nodehattı işinin geri kalanında çalışır. komutunu kullandığınıznvmher adımda betiği aşağıdaki kodla başlatın:- bash: | . ${NVM_DIR}/nvm.sh nvm <command>
SSS
'FATAL ERROR: CALL_AND_RETRY_LAST Ayırma başarısız oldu - JavaScript yığını bellek dışı' iletisiyle işlem hattı hatasını nasıl düzeltebilirim?
bu hata türü, Node.js paketi bellek kullanım sınırını aştığında oluşur. Sorunu çözmek için gibi NODE_OPTIONS bir değişken ekleyin ve değerini atayın --max_old_space_size=16384.
Derleme işleminin bir parçası olarak npm paketlerimi nasıl sürüme ekleyebilirim?
Bir seçenek, sürüm denetimi ve npm sürümünün bir birleşimini kullanmaktır. İşlem hattı çalıştırmasının sonunda deponuzu yeni sürümle güncelleştirebilirsiniz. Aşağıdaki YAML işlem hattı bir GitHub deposuna sahiptir ve paket npmjs'ye dağıtılır. npmjs üzerindeki paket sürümü ile package.json dosyası arasında bir uyuşmazlık varsa derleme başarısız olur.
variables:
MAP_NPMTOKEN: $(NPMTOKEN) # Mapping secret var
trigger:
- none
pool:
vmImage: 'ubuntu-latest'
steps: # Checking out connected repo
- checkout: self
persistCredentials: true
clean: true
- task: npmAuthenticate@0
inputs:
workingFile: .npmrc
customEndpoint: 'my-npm-connection'
- task: UseNode@1
inputs:
version: '16.x'
displayName: 'Install Node.js'
- script: |
npm install
displayName: 'npm install'
- script: |
npm pack
displayName: 'Package for release'
- bash: | # Grab the package version
v=`node -p "const p = require('./package.json'); p.version;"`
echo "##vso[task.setvariable variable=packageVersion]$v"
- task: CopyFiles@2
inputs:
contents: '*.tgz'
targetFolder: $(Build.ArtifactStagingDirectory)/npm
displayName: 'Copy archives to artifacts staging directory'
- task: CopyFiles@2
inputs:
sourceFolder: '$(Build.SourcesDirectory)'
contents: 'package.json'
targetFolder: $(Build.ArtifactStagingDirectory)/npm
displayName: 'Copy package.json'
- task: PublishBuildArtifacts@1
inputs:
PathtoPublish: '$(Build.ArtifactStagingDirectory)/npm'
artifactName: npm
displayName: 'Publish npm artifact'
- script: | # Config can be set in .npmrc
npm config set //registry.npmjs.org/:_authToken=$(MAP_NPMTOKEN)
npm config set scope "@myscope"
# npm config list
# npm --version
npm version patch --force
npm publish --access public
- task: CmdLine@2 # Push changes to GitHub (substitute your repo)
inputs:
script: |
git config --global user.email "username@contoso.com"
git config --global user.name "Azure Pipeline"
git add package.json
git commit -a -m "Test Commit from Azure DevOps"
git push -u origin HEAD:main
İlgili içerik
- Azure Artifacts ve Paket Yönetimi hizmeti hakkında daha fazla bilgi için bkz. Azure Artifacts'te Paket Yönetimi.
- Görevler hakkında daha fazla bilgi için bkz. Derleme, sürüm ve test görevleri.