Megosztás a következőn keresztül:


Folyamatok JavaScript-alkalmazásokhoz

Ez a cikk bemutatja, hogyan működik az Azure Pipelines a JavaScript-alkalmazásokkal. A Microsoft által üzemeltetett ügynökök előtelepítik az olyan gyakori JavaScript-buildelési, tesztelési és üzembehelyezési eszközöket, mint az npm, a Node.js, a Yarn és a Gulp, anélkül, hogy bármilyen infrastruktúrát kellene beállítania. Önállóan üzemeltetett ügynököket is konfigurálhat.

A JavaScript-folyamat gyors létrehozásához tekintse meg a JavaScript rövid útmutatót.

Node.js eszköztelepítők

A nem előre telepített Node.js- és npm-verziók telepítéséhez, illetve az eszközök saját üzemeltetésű ügynökökre való telepítéséhez:

Egy adott Node.js verzió telepítéséhez adja hozzá a következő kódot a azure-pipelines.yml fájlhoz:

- task: UseNode@1
  inputs:
    version: '16.x' # replace with the version you need

Feljegyzés

Ez a feladat jelentős időt igényelhet egy újabb alverzióra való frissítéshez minden alkalommal, amikor a folyamat fut. A Microsoft által üzemeltetett ügynökök rendszeresen frissülnek, ezért ezzel a feladattal csak olyan csomópontverziókat telepíthet, amelyek nincsenek előre telepítve. A Microsoft által üzemeltetett ügynökökre előre telepített Node.js és npm-verziókról a Szoftver című témakörben tájékozódhat.

Több csomópontverzió használata

A Node.js ökorendszer 1. verziójának használata feladat segítségével matrix stratégiát alkalmazva több Node.js verzión hozhatja létre és tesztelheti az alkalmazását. További információ: Többfeladatos konfiguráció.

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

Függőségkezelő eszköz telepítése

Ha fejlesztési függőségi eszközökkel rendelkezik a projektben, a package.json vagy a package-lock.json fájlban, telepítse az eszközöket és függőségeket az npm keresztül. A projektfájl az eszközök pontos verzióját határozza meg, függetlenül a buildügynökön található többi verziótól.

Ha telepíteni szeretné ezeket az eszközöket a buildügynökre, használjon szkriptet, npm-feladatot vagy parancssori feladatot a folyamatban.

Szkript használata:

- script: npm install --only=dev

Az npm-feladat használata:

- task: Npm@1
  inputs:
     command: 'install'

Az ilyen módon telepített eszközök az npm csomagkezelőt npx használják, amely észleli az eszközöket a PATH környezetben. Az alábbi példa meghívja a mocha tesztfuttatót, és a globálisan telepített verzió helyett a fejlesztési függőségi verziót npm install -ghasználja.

- script: npx mocha

Ha olyan eszközöket szeretne telepíteni, amelyekre a projektnek nincs fejlesztési függőségként beállítva a package.json-ban, hívja meg a npm install -g egy szkriptből a folyamatában. Az alábbi példa az Angular CLI legújabb verzióját telepíti a használatávalnpm. A folyamat többi szkriptje ezután használhatja az Angular ng parancsokat.

- script: npm install -g @angular/cli

Feljegyzés

A Microsoft által üzemeltetett Linux-ügynököknél a parancsot a következővel sudokell előtaggal előtaggal sudo npm install -gelérhetővé tenni:

Ezek az eszköztelepítési feladatok minden alkalommal futnak, amikor a pipeline fut, ezért tartsa szem előtt az összeállítási időkre gyakorolt hatásukat. Ha a többletterhelés súlyosan befolyásolja a buildelési teljesítményt, fontolja meg a szükséges eszközverziókkal előre konfigurált , saját üzemeltetésű ügynökök használatát.

Feljegyzés

Ezek az eszköztelepítési feladatok minden alkalommal futnak, amikor a pipeline fut, ezért tartsa szem előtt az összeállítási időkre gyakorolt hatásukat.

Függőségi csomagok letöltése

A Yarn vagy az Azure Artifacts használatával csomagokat tölthet le a nyilvános npm-beállításjegyzékből vagy egy *.npmrc-fájlban megadott privát npm-beállításjegyzékből. Egy npm-beállításjegyzék megadásához adja hozzá az URL-címét a *.npmrc fájlhoz a kódtárban.

Az npm használata

Az npm használatával az alábbi módokon töltheti le a buildcsomagokat a folyamatban:

  • A csomagok hitelesítés nélküli letöltésének legegyszerűbb módja a közvetlen futtatás npm install.
  • Hitelesített regisztrációs adatbázis használatához adja hozzá az npm feladatot.
  • Ha a Gulp, a Grunt vagy a Maven feladatfuttatójából szeretné npm install futtatni, használja az npm authenticate feladatot.

Feljegyzés

Ha az npm-hírcsatorna hitelesítést használ, a hitelesítő adatok kezeléséhez létre kell hoznia egy npm-szolgáltatáskapcsolatot az Azure DevOps Project-beállításokSzolgáltatások lapján.

Az npm-csomagok közvetlen telepítéséhez használja az alábbi szkriptet a azure-pipelines.yml. Ha a buildügynöknek nincs szüksége fejlesztési függőségekre, felgyorsíthatja a buildelési időket a --only=prod beállítás hozzáadásával npm install.

- script: npm install --only=prod

A *.npmrc fájlban megadott privát beállításjegyzék használatához adja hozzá a Npm@1 feladatot az azure-pipelines.yml fájlhoz.

- task: Npm@1
  inputs:
    customEndpoint: <Name of npm service connection>

Ha a feladatfuttatókon (például a Gulp) keresztül szeretné átadni a rendszerleíró adatbázis hitelesítő adatait az npm-parancsoknak, adja hozzá a npmAuthenticate@0 feladatot az azure-pipelines.yml-hez, mielőtt meghívja a feladatfuttatót.

- task: npmAuthenticate@0
  inputs:
    customEndpoint: <Name of npm service connection>

Feljegyzés

A Microsoft által üzemeltetett ügynökök minden buildben új gépet használnak. A függőségek visszaállítása jelentős időt vehet igénybe. A probléma megoldásához használhatja az Azure Artifactst vagy egy saját üzemeltetésű ügynököt a csomaggyorsítótárral.

Ha a buildek időnként meghiúsulnak a kapcsolati problémák miatt, amikor visszaállítja a csomagokat az npm-beállításjegyzékből, az Azure Artifacts és a felsőbb rétegbeli források segítségével gyorsítótárazhatja a csomagokat. Az Azure Artifacts automatikusan a folyamat hitelesítő adatait használja, amelyek általában a Project Collection Build Service-fiókból származnak.

Feljegyzés

A függőségek visszaállítása jelentős időt vehet igénybe. A probléma megoldásához használhatja az Azure Artifactst vagy egy saját üzemeltetésű ügynököt a csomaggyorsítótárral.

Ha a buildek időnként meghiúsulnak a kapcsolati problémák miatt, amikor visszaállítja a csomagokat az npm-beállításjegyzékből, az Azure Artifacts és a felsőbb rétegbeli források segítségével gyorsítótárazhatja a csomagokat. Az Azure Artifacts automatikusan a folyamat hitelesítő adatait használja, amelyek általában a Project Collection Build Service-fiókból származnak.

A Yarn használata

Szkripttel telepítse a Yarn-t a függőségek visszaállításához. A Yarn előre telepítve van néhány Microsoft által üzemeltetett ügynökön. A Yarn telepítése és konfigurálása önálló ügynökökre hasonlóan történik, mint más eszközök esetén.

- script: yarn install

A folyamatban a parancssori vagy Bash feladatot is használhatja a Yarn meghívására.

JavaScript-fordítók

A JavaScript-alkalmazások olyan fordítókat használnak, mint a Babel és a TypeScripttsc fordító, hogy a forráskódot a Node.js futtatókörnyezetben vagy webböngészőkben használható verziókká alakítják. Ha egy szkriptobjektum van beállítva a projektben a package.json fájlban a fordítót (kompilátort) futtatására, akkor azt meghívhatja a folyamatban.

- script: npm run compile

A fordítókat közvetlenül a folyamatból is meghívhatja egy szkript használatával. Ezek a parancsok a klónozott forráskódtár gyökeréből futnak.

- script: tsc --target ES6 --strict true --project tsconfigs/production.json

Az npm-feladat használatával létrehozhatja a kódot, ha a projekt package.json egy fordítási szkriptet definiál. Ha nem határoz meg fordítási szkriptet, a Bash-feladat használatával lefordíthatja a kódot.

Egységtesztelés

Konfigurálhatja a folyamatokat a JavaScript-tesztek futtatására, hogy JUnit XML formátumban hozhassák létre az eredményeket. Ezután közzéteheti az eredményeket a Teszteredmények közzététele feladattal.

Ha a tesztelési keretrendszer nem támogatja a JUnit-kimenetet, adjon hozzá támogatást egy partnerjelentési modulon keresztül, például a mocha-junit-reporteren keresztül. Frissítheti a tesztszkriptet a JUnit-riporter használatára, vagy átadhatja ezeket a beállításokat a feladatdefinícióba, ha a riporter támogatja a parancssori beállításokat.

Az alábbi táblázat a leggyakrabban használt tesztfuttatókat és az XML-eredmények előállításához használható riportereket sorolja fel:

Tesztfuttató XML-jelentések riporterei
Mocha mocha-junit-reporter
cypress-multi-reporters
Jázmin jasmine-riporterek
Jest jest-junit
jest-junit-reporter
Karma karma-junit-riporter
Ava tap-xunit

Az alábbi példa a mocha-junit-reportert használja, és közvetlenül egy szkripttel hív meg mocha test . Ez a szkript a JUnit XML-kimenetet a ./test-results.xmlalapértelmezett helyén állítja elő.

- script: mocha test --reporter mocha-junit-reporter

Ha egy test szkriptet definiált a projekt package.json fájljában, azt npm test használatával tudja meghívni.

- script: npm test

Teszteredmények közzététele

A teszteredmények közzétételéhez használja a Teszteredmények közzététele feladatot.

- task: PublishTestResults@2
  condition: succeededOrFailed()
  inputs:
    testRunner: JUnit
    testResultsFiles: '**/test-results.xml'

Kódlefedettségi eredmények közzététele

Ha a tesztszkriptek egy kódlefedettségi eszközt futtatnak, például Isztambult, adja hozzá a kódlefedettségi eredmények közzétételének feladatát . Ezután a lefedettségi metrikákat a build összegzésében tekintheti meg, és további elemzés céljából HTML-jelentéseket tölthet le.

A feladat Cobertura vagy JaCoCo jelentési kimenetet vár. Győződjön meg arról, hogy a kódlefedettségi eszköz a megfelelő kimenet létrehozásához szükséges beállításokkal fut, például --report cobertura.

Az alábbi példa az Istanbul nyc parancssori felületet és a mocha-junit-reportert használja, és meghívja npm test.

- 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'

A böngészők végpontok közötti tesztelése

A pipeline-ja olyan eszközöket használhat, mint a Protractor vagy a Karma a tesztek futtatására fej nélküli böngészőkben, majd közzéteheti a teszteredményeket. A böngészőtesztelés konfigurálásához és az eredmények közzétételéhez kövesse az alábbi lépéseket:

  1. Telepítsen egy fej nélküli böngészőtesztelőt, például a fej nélküli Chrome-ot vagy a Firefoxot, vagy egy böngésző-utánzó eszközt, például a PhantomJS-t a buildügynökre.
  2. Konfigurálja a tesztelési keretrendszert úgy, hogy az eszköz dokumentációjának megfelelően használja a fej nélküli böngészőt vagy az illesztőprogramot.
  3. Konfigurálja a tesztelési keretrendszert JUnit-formátumú teszteredmények kimenetére, általában egy riporteri beépülő modullal vagy konfigurációval.
  4. Adjon hozzá egy szkriptet vagy parancssori felületi feladatot a fej nélküli böngészőpéldányok elindításához.
  5. Futtassa a végpontok közötti teszteket a folyamat szakaszaiban az egységtesztekkel együtt.
  6. Tegye közzé az eredményeket az egységtesztekkel együtt ugyanazzal a teszteredmények közzétételére szolgáló feladattal.

Csomagolás és szállítás

Az alkalmazás létrehozása és tesztelése után a következőt teheti:

  • Töltse fel a buildkimenetet az Azure Pipelinesba.
  • Npm- vagy Maven-csomag létrehozása és közzététele.
  • Csomagolja be a build kimenetét egy ZIP-archívumba, hogy üzembe helyezhesse őket egy webalkalmazásban.

Fájlok közzététele az Azure Pipelinesban

A teljes munkakönyvtár feltöltéséhez adja hozzá a buildösszetevők közzététele feladatot a azure-pipelines.yml fájlhoz.

- task: PublishBuildArtifacts@1
  inputs:
    PathtoPublish: '$(System.DefaultWorkingDirectory)'

A fájlok egy részhalmazának feltöltéséhez először másolja a szükséges fájlokat a munkakönyvtárból egy átmeneti könyvtárba a Fájlok másolása feladattal, majd használja a Build-összetevők közzététele feladatot.

- task: CopyFiles@2
  inputs:
    SourceFolder: '$(System.DefaultWorkingDirectory)'
    Contents: |
      **\*.js
      package.json
    TargetFolder: '$(Build.ArtifactStagingDirectory)'

- task: PublishBuildArtifacts@1

Modul közzététele npm-beállításjegyzékben

Ha a projekt kimenete egy npm modul, amelyet más projektek használnak, és nem webalkalmazás, az npm-feladat használatával tegye közzé a modult egy helyi beállításjegyzékben vagy a nyilvános npm-beállításjegyzékben. Minden közzétételkor adjon meg egyedi nevet/verziókombinációt.

Az alábbi példa bemutatja, hogyan lehet közzétenni a szkript segítségével a nyilvános npm nyilvántartóban. A példa feltételezi, hogy a verzióinformációkat, például az npm-verziót egy package.json fájlon keresztül kezeli a verziókövetésben.

- script: npm publish

Az alábbi példa az adattár *.npmrc fájljában definiált egyéni beállításjegyzékben teszi közzé. Állítson be egy npm-szolgáltatáskapcsolatot, amely a build futtatásakor hitelesítési hitelesítő adatokat szúr be a kapcsolatba.

- task: Npm@1
  inputs:
     command: publish
     publishRegistry: useExternalRegistry
     publishEndpoint: https://my.npmregistry.com

Az alábbi példa közzéteszi a modult egy Azure DevOps Services-csomagkezelési csatornán.

- task: Npm@1
  inputs:
     command: publish
     publishRegistry: useFeed
     publishFeed: https://my.npmregistry.com

Az npm-csomagok verziószámozásával és közzétételével kapcsolatos további információkért tekintse meg az npm-csomagok közzétételét és az npm-csomagok verziószámozását a buildelési folyamat részeként.

Webalkalmazások csomagolása és üzembe helyezése

Az alkalmazásokat úgy csomagolhatja be, hogy az összes modult köztes kimenetekkel és függőségekkel csomagolja az üzembe helyezésre kész statikus eszközökbe. Összeállítás és tesztelés után adjon hozzá egy folyamatszakaszt egy olyan eszköz futtatásához, mint a webpack vagy az Angular CLI ng buildje.

Az alábbi példa hívja meg a webpack-t. A folyamat működéséhez győződjön meg arról, hogy webpack fejlesztési függőségként van konfigurálva a package.json projektfájlban. Ez a szkript az alapértelmezett konfigurációval fut webpack , hacsak nem rendelkezik webpack.config.js fájllal a projekt gyökérmappájában.

- script: webpack

Az alábbi példa a npm run build-t használja a build fájlban definiált szkriptobjektum meghívására a projektben. A szkriptobjektum használatával áthelyezi a build logikát a forráskódba, kivonva azt a folyamatból.

- script: npm run build

A folyamat cli- vagy Bash-feladatával meghívhatja a csomagolóeszközt, például webpack az Angulart.ng build

Ha webalkalmazásban való közzétételre kész *.zip fájlarchívumot szeretne létrehozni, használja az Archív fájlok feladatot.

- task: ArchiveFiles@2
  inputs:
    rootFolderOrFile: '$(System.DefaultWorkingDirectory)'
    includeRootFolder: false

Ha közzé szeretné tenni ezt az archívumot egy webalkalmazásban, olvassa el az Üzembe helyezés az Azure App Service-ben az Azure Pipelines használatával című témakört.

JavaScript-keretrendszerek

Különböző JavaScript-keretrendszerek támogatásához csomagokat telepíthet a folyamatba.

Angular

Az Angular-alkalmazások esetében futtathat Angular-specifikus parancsokat, például ng test: , ng buildés ng e2e. Ha Angular CLI-parancsokat szeretne használni a folyamatban, telepítse az angular /cli npm csomagot a buildügynökre.

- script: |
    npm install -g @angular/cli
    npm install
    ng build --prod

Feljegyzés

A Microsoft által üzemeltetett Linux-ügynököknél a parancsot a következővel sudokell előtaggal előtaggal sudo npm install -gelérhetővé tenni:

A folyamat olyan tesztjeihez, amelyekhez böngésző futtatása szükséges, például a Karma ng test parancsával történő futtatáshoz, használjon headless böngészőt a normál böngésző helyett. Az Angular starter alkalmazásban:

  • Módosítsa a bejegyzést a browserskarma.conf.js projektfájlban a következőre browsers: ['Chrome']browsers: ['ChromeHeadless']: .
  • Módosítsa a bejegyzést a singleRunkarma.conf.js projektfájlban a következőre falsetrue: . Ez a változás segít biztosítani, hogy a Karma-folyamat a futtatása után leálljon.

React és Vue

A React és a Vue-alkalmazások összes függősége rögzítve lesz a package.json fájlban. A azure-pipelines.yml fájl a szabványos npm szkripteket tartalmazza.

- script: |
    npm install
  displayName: 'npm install'

- script: |
    npm run build
  displayName: 'npm build'

A buildfájlok egy új mappában találhatók: dist a Vue-hoz vagy build a React-hoz. Az alábbi példa egy kiadásra kész összetevőt wwwhoz létre. A folyamat a Use Node.js, Copy file and Publish build artifacts tasks (A Node.jshasználata, a Fájl másolása és a Buildösszetevők közzététele) feladatokat használja.

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

Az alkalmazás kiadásához irányítsa a kiadási feladatot a dist vagy build összetevőre, és használja az Azure Web App feladatot.

Webpack

Webpack konfigurációs fájl használatával megadhat egy fordítót, például a Babelt vagy a TypeScriptet, a JavaScript XML -t (JSX) vagy a TypeScriptet egyszerű JavaScriptre fordíthatja, és összecsomagolhatja az alkalmazást.

- script: |
    npm install webpack webpack-cli --save-dev
    npx webpack --config webpack.config.js

Feladatfuttatók létrehozása

Gyakran használják a Gulp vagy Grunt programot feladatfuttatóként JavaScript-alkalmazások létrehozásához és teszteléséhez.

Korty

A Gulp előre telepítve van a Microsoft által üzemeltetett ügynökökre.

A parancsot a gulp YAML-folyamatfájlban futtathatja.

- script: gulp # add any needed options

Ha a gulpfile.js fájl lépéseihez hitelesítésre van szükség egy npm-beállításjegyzékkel, adja hozzá az npm hitelesítési feladatot.

- task: npmAuthenticate@0
  inputs:
    customEndpoint: <Name of npm service connection>

- script: gulp

Ha JUnit- vagy xUnit-teszteredményeket szeretne közzétenni a kiszolgálón, adja hozzá a Teszteredmények közzététele feladatot.

- task: PublishTestResults@2
  inputs:
    testResultsFiles: '**/TEST-RESULTS.xml'
    testRunTitle: 'Test results for JavaScript using gulp'

Ha közzé szeretné tenni a kódlefedettségi eredményeket a kiszolgálón, adja hozzá a kódlefedettségi eredmények közzétételére vonatkozó feladatot. A lefedettségi metrikákat a build összefoglalásában találja, és további elemzés céljából HTML-jelentéseket tölthet le.

- task: PublishCodeCoverageResults@1
  inputs: 
    codeCoverageTool: Cobertura
    summaryFileLocation: '$(System.DefaultWorkingDirectory)/**/*coverage.xml'
    reportDirectory: '$(System.DefaultWorkingDirectory)/**/coverage'

Grunt

A Grunt előre telepítve van a Microsoft által üzemeltetett ügynökökre.

A parancsot a grunt YAML-fájlban futtathatja.

- script: grunt # add any needed options

Ha a Gruntfile.js fájl lépéseihez hitelesítésre van szükség egy npm-beállításjegyzékkel, adja hozzá az npm hitelesítési feladatot.

- task: npmAuthenticate@0
  inputs:
    customEndpoint: <Name of npm service connection>

- script: grunt

Hibaelhárítás

Ha létrehozhatja a projektet a fejlesztőgépen, de nem tudja az Azure Pipelinesban felépíteni, tekintse meg az alábbi lehetséges okokat és korrekciós műveleteket.

  • Ellenőrizze, hogy a Node.js és a fejlesztési gépen lévő feladatfuttató verziói megegyeznek-e az ügynökön lévőkkel.

    Az ügynökre telepített verziók ellenőrzéséhez parancssori szkripteket is felvehet a csővezetékbe, mint például node --version. Használja a Use Node.js feladatot ugyanazon verzió ügynökre történő telepítéséhez, vagy futtassa a npm install parancsokat az eszközverziók frissítéséhez.

  • Ha a buildek időnként meghiúsulnak a csomagok visszaállítása során, az npm beállításjegyzéke problémákat tapasztal, vagy hálózati problémák merülnek fel az Azure-adatközpont és a beállításjegyzék között. Megtudhatja, hogy az Azure Artifacts és az npm-beállításjegyzék felsőbb rétegbeli forrásként való használata javítja-e a buildek megbízhatóságát.

  • Ha a Node.js különböző verzióit szeretné nvm kezelni, váltson inkább a Use Node.js (UseNode@1) feladatra. nvm előzmény okokból telepítve van a macOS-lemezképen. nvm több Node.js verziót kezel a rendszerhéj-aliasok hozzáadásával és módosításával PATH, ami rosszul működik együtt azzal, ahogyan az Azure Pipelines az egyes feladatokat egy új folyamatban futtatja. További információkért lásd a Pipeline futtatások részt.

    A Use Node.js feladat megfelelően kezeli ezt a modellt. Ha azonban a munkája során szükség van a nvm használatára, a következő szkriptet adhatja hozzá az egyes folyamatok elejéhez:

    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"
    

    Ezután más node parancssori eszközök is működnek a folyamatfeladat többi részében. A parancsot használó nvm minden lépésben indítsa el a szkriptet a következő kóddal:

    - bash: |
        . ${NVM_DIR}/nvm.sh
        nvm <command>
    

GYIK

Hogyan lehet megjavítani egy csővezetékhibát a "VÉGZETES HIBA: CALL_AND_RETRY_LAST Foglalás sikertelen – JavaScript-kupac nem fér bele a memóriába" üzenettel?

Ez a hibatípus akkor fordul elő, ha a Node.js csomag túllépi a memóriahasználati korlátot. A probléma megoldásához adjon hozzá egy hasonló NODE_OPTIONS változót, és rendelje hozzá egy értékhez --max_old_space_size=16384.

Hogyan verziózhatom az npm-csomagokat a buildelési folyamat részeként?

Az egyik lehetőség a verziókövetés és az npm-verzió kombinációja. A folyamatfuttatás végén frissítheti az adattárat az új verzióval. Az alábbi YAML-folyamat egy GitHub-adattárral rendelkezik, és a csomag az npmjs-ben települ. A build meghiúsul, ha eltérés van az npmjs csomagverziója és a package.json fájl között.

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