Bagikan melalui


Versi Modul Prarilis

Dimulai dengan versi 1.6.0, PowerShellGet dan Galeri PowerShell menyediakan dukungan untuk menandai versi yang lebih besar dari 1.0.0 sebagai prarilis. Sebelum fitur ini, paket prarilis dibatasi untuk memiliki versi yang dimulai dengan 0. Tujuan dari fitur-fitur ini adalah untuk memberikan dukungan yang lebih besar untuk konvensi penerapan versi SemVer v1.0.0 tanpa melanggar kompatibilitas mundur dengan PowerShell versi 3 ke atas, atau versi PowerShellGet yang ada. Topik ini berfokus pada fitur khusus modul. Fitur yang setara untuk skrip ada dalam topik Versi Prarilis Skrip . Dengan menggunakan fitur-fitur ini, penerbit dapat mengidentifikasi modul atau skrip sebagai versi 2.5.0-alpha, dan yang lebih baru merilis versi siap produksi 2.5.0 yang menggantikan versi prarilis.

Pada tingkat tinggi, fitur modul prarilis meliputi:

  • Menambahkan string Prarilis ke bagian PSData dari manifes modul mengidentifikasi modul sebagai versi prarilis. Ketika modul diterbitkan ke Galeri PowerShell, data ini diekstraksi dari manifes, dan digunakan untuk mengidentifikasi paket prarilis.
  • Memperoleh paket prarilis memerlukan penambahan -AllowPrerelease bendera ke perintah Find-ModulePowerShellGet , , Install-ModuleUpdate-Module, dan Save-Module. Jika bendera tidak ditentukan, paket prarilis tidak akan ditampilkan.
  • Versi modul yang ditampilkan oleh Find-Module, Get-InstalledModule, dan di Galeri PowerShell akan ditampilkan sebagai string tunggal dengan string Prarilis ditambahkan, seperti dalam 2.5.0-alpha.

Detail untuk fitur disertakan di bawah ini.

Perubahan ini tidak memengaruhi dukungan versi modul yang disertakan dalam PowerShell, dan kompatibel dengan PowerShell 3.0, 4.0, dan 5.

Mengidentifikasi versi modul sebagai prarilis

Dukungan PowerShellGet untuk versi prarilis memerlukan penggunaan dua bidang dalam Manifes Modul:

  • ModuleVersion yang disertakan dalam manifes modul harus berupa versi 3 bagian jika versi prarilis digunakan, dan harus mematuhi penerapan versi PowerShell yang ada. Format versinya adalah A.B.C, di mana A, B, dan C adalah semua bilangan bulat.
  • String Prarilis ditentukan dalam manifes modul, di bagian PSData PrivateData.

Persyaratan terperinci pada string Prarilis ada di bawah ini.

Contoh bagian dari manifes modul yang mendefinisikan modul sebagai prarilis akan terlihat seperti berikut:

@{
    ModuleVersion = '2.5.0'
    #---
    PrivateData = @{
        PSData = @{
            Prerelease = 'alpha'
        }
    }
}

Persyaratan terperinci untuk string Prarilis adalah:

  • String prarilis hanya dapat ditentukan ketika ModuleVersion adalah 3 segmen untuk Major.Minor.Build. Ini selaras dengan SemVer v1.0.0.
  • Tanda hubung adalah pemisah antara nomor Build dan string Prarilis. Tanda hubung dapat disertakan dalam string Prarilis sebagai karakter pertama, hanya.
  • String Prarilis hanya boleh berisi alfanumerik ASCII [0-9A-Za-z-]. Ini adalah praktik terbaik untuk memulai string Prarilis dengan karakter alfa, karena akan lebih mudah untuk mengidentifikasi bahwa ini adalah versi prarilis saat memindai daftar paket.
  • Hanya string prarilis SemVer v1.0.0 yang didukung saat ini. String prarilis tidak boleh berisi titik atau + [.+], yang diizinkan dalam SemVer 2.0.
  • Contoh string Prarilis yang didukung adalah: -alpha, -alpha1, -BETA, -update20171020

Dampak penerapan versi prarilis pada urutan sortir dan folder penginstalan

Urutkan perubahan urutan saat menggunakan versi prarilis, yang penting saat menerbitkan ke Galeri PowerShell, dan saat menginstal modul menggunakan perintah PowerShellGet. Jika string Prarilis ditentukan untuk dua modul, urutan pengurutan didasarkan pada bagian string setelah tanda hubung. Jadi, versi 2.5.0-alpha kurang dari 2.5.0-beta, yang kurang dari 2.5.0-gamma. Jika dua modul memiliki ModuleVersion yang sama, dan hanya satu yang memiliki string Prarilis, modul tanpa string Prarilis diasumsikan sebagai versi siap produksi dan akan diurutkan sebagai versi yang lebih besar dari versi prarilis (yang mencakup string Prarilis). Sebagai contoh, saat membandingkan rilis 2.5.0 dan 2.5.0-beta, versi 2.5.0 akan dianggap lebih besar dari keduanya.

Saat menerbitkan ke Galeri PowerShell, secara default versi modul yang diterbitkan harus memiliki versi yang lebih besar dari versi yang diterbitkan sebelumnya yang ada di Galeri PowerShell.

Menemukan dan memperoleh paket prarilis menggunakan perintah PowerShellGet

Menangani paket prarilis menggunakan perintah PowerShellGet Find-Module, Install-Module, Update-Module, dan Save-Module memerlukan penambahan bendera -AllowPrerelease. Jika -AllowPrerelease ditentukan, paket prarilis akan disertakan jika ada. Jika bendera -AllowPrerelease tidak ditentukan, paket prarilis tidak akan ditampilkan.

Satu-satunya pengecualian untuk ini dalam perintah modul PowerShellGet adalah Get-InstalledModule, dan beberapa kasus dengan Uninstall-Module.

  • Get-InstalledModule akan selalu secara otomatis menampilkan informasi prarilis dalam string versi untuk modul.
  • Uninstall-Module secara default akan menghapus instalan versi terbaru modul, jika tidak ada versi yang ditentukan. Perilaku itu tidak berubah. Namun, jika versi prarilis ditentukan menggunakan -RequiredVersion, -AllowPrerelease akan diperlukan.

Contoh

Asumsikan Galeri PowerShell memiliki modul TestPackage versi 1.8.0 dan 1.9.0-alpha. Jika -AllowPrerelease tidak ditentukan, hanya versi 1.8.0 yang akan dikembalikan.

find-module TestPackage
Version        Name           Repository  Description
-------        ----           ----------  -----------
1.8.0          TestPackage    PSGallery   Package used to validate changes to the PowerShe...
find-module TestPackage -AllowPrerelease
Version        Name           Repository  Description
-------        ----           ----------  -----------
1.9.0-alpha    TestPackage    PSGallery   Package used to validate changes to the PowerShe...

Untuk menginstal prarilis, selalu tentukan -AllowPrerelease. Menentukan string versi prarilis tidak cukup.

Install-module TestPackage -RequiredVersion 1.9.0-alpha
PackageManagement\Find-Package : No match was found for the specified search criteria and module name 'TestPackage'.
Try Get-PSRepository to see all available registered module repositories.
At C:\Program Files\WindowsPowerShell\Modules\PowerShellGet\1.6.0\PSModule.psm1:1455 char:3
+         PackageManagement\Find-Package @PSBoundParameters | Microsoft ...
+         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (Microsoft.Power...ets.FindPackage:FindPackage) [Find-Package], Exception
    + FullyQualifiedErrorId : NoMatchFoundForCriteria,Microsoft.PowerShell.PackageManagement.Cmdlets.FindPackage

Perintah sebelumnya gagal karena -AllowPrerelease tidak ditentukan. -AllowPrerelease Menambahkan akan menghasilkan keberhasilan.

Install-module TestPackage -RequiredVersion 1.9.0-alpha -AllowPrerelease
Get-InstalledModule TestPackage
Version         Name          Repository  Description
-------         ----          ----------  -----------
1.9.0-alpha     TestPackage   PSGallery   Package used to validate changes to the PowerShe...

Penginstalan berdampingan dari versi modul yang hanya berbeda karena prarilis yang ditentukan tidak didukung. Saat menginstal modul menggunakan PowerShellGet, versi yang berbeda dari modul yang sama diinstal berdampingan dengan membuat nama folder menggunakan ModuleVersion. ModuleVersion, tanpa string prarilis, digunakan untuk nama folder. Jika pengguna menginstal MyModule versi 2.5.0-alpha, itu akan diinstal ke MyModule\2.5.0 folder. Jika pengguna kemudian menginstal 2.5.0-beta, versi 2.5.0-beta akan menimpa konten folder MyModule\2.5.0. Salah satu keuntungan dari pendekatan ini adalah tidak perlu membatalkan penginstalan versi prarilis setelah menginstal versi siap produksi. Contoh di bawah ini menunjukkan apa yang diharapkan:

C:\windows\system32> Get-InstalledModule TestPackage -AllVersions

Version         Name           Repository  Description
-------         ----           ----------  -----------
1.9.0-alpha     TestPackage    PSGallery   Package used to validate changes to the PowerShe...
1.8.0           TestPackage    PSGallery   Package used to validate changes to the PowerShe...
1.1.3.2         TestPackage    PSGallery   Package used to validate changes to the PowerShe...

C:\windows\system32> find-module TestPackage -AllowPrerelease

Version        Name            Repository  Description
-------        ----            ----------  -----------
1.9.0-beta     TestPackage     PSGallery   Package used to validate changes to the PowerShe...

C:\windows\system32> Update-Module TestPackage -AllowPrerelease
C:\windows\system32> Get-InstalledModule TestPackage -AllVersions

Version         Name           Repository  Description
-------         ----           ----------  -----------
1.9.0-beta      TestPackage    PSGallery   Package used to validate changes to the PowerShe...
1.8.0           TestPackage    PSGallery   Package used to validate changes to the PowerShe...
1.1.3.2         TestPackage    PSGallery   Package used to validate changes to the PowerShe...

Uninstall-Module akan menghapus versi terbaru modul ketika -RequiredVersion tidak disediakan. Jika -RequiredVersion ditentukan, dan merupakan prarilis, -AllowPrerelease harus ditambahkan ke perintah.

C:\windows\system32> Get-InstalledModule TestPackage -AllVersions

Version         Name           Repository  Description
-------         ----           ----------  -----------
2.0.0-alpha1    TestPackage    PSGallery   Package used to validate changes to the PowerShe...
1.9.0-beta      TestPackage    PSGallery   Package used to validate changes to the PowerShe...
1.8.0           TestPackage    PSGallery   Package used to validate changes to the PowerShe...
1.1.3.2         TestPackage    PSGallery   Package used to validate changes to the PowerShe...

C:\windows\system32> Uninstall-Module TestPackage -RequiredVersion 1.9.0-beta

Uninstall-Module : The '-AllowPrerelease' parameter must be specified when using the Prerelease string in
MinimumVersion, MaximumVersion, or RequiredVersion.
At line:1 char:1
+ Uninstall-Module TestPackage -RequiredVersion 1.9.0-beta
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidArgument: (:) [Uninstall-Module], ArgumentException
    + FullyQualifiedErrorId : AllowPrereleaseRequiredToUsePrereleaseStringInVersion,Uninstall-Module

C:\windows\system32> Uninstall-Module TestPackage -RequiredVersion 1.9.0-beta -AllowPrerelease
C:\windows\system32> Get-InstalledModule TestPackage -AllVersions

Version         Name          Repository   Description
-------         ----          ----------   -----------
2.0.0-alpha1    TestPackage   PSGallery    Package used to validate changes to the PowerShe...
1.8.0           TestPackage   PSGallery    Package used to validate changes to the PowerShe...
1.1.3.2         TestPackage   PSGallery    Package used to validate changes to the PowerShe...

C:\windows\system32> Uninstall-Module TestPackage
C:\windows\system32> Get-InstalledModule TestPackage -AllVersions

Version         Name          Repository   Description
-------         ----          ----------   -----------
1.8.0           TestPackage   PSGallery    Package used to validate changes to the PowerShe...
1.1.3.2         TestPackage   PSGallery    Package used to validate changes to the PowerShe...

Detail Selengkapnya