npm - TypeScript sa nevytvára s Azure Hosted Agent
Mám ASP.NET MVC aplikáciu napísanú v .Net5.
Toto používa súbory TypeScript a mám odkazy na balíčky NuGet na nasledujúce:
<PackageReference Include="BuildBundlerMinifier" Version="3.2.449" />
<PackageReference Include="Microsoft.TypeScript.MSBuild" Version="4.0.3">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<PackageReference Include="Microsoft.Web.LibraryManager.Build" Version="2.1.113" />
V mojom projekte mám:
- Priečinok nazvaný
node-modules(nebol odoslaný na Azure Devops) - bundleconfig.json
- gulpfile.js
- libman.json
- package.json (+ package-lock.json)
package.json je:
{
"version": "1.0.0",
"name": "asp.net",
"private": true,
"devDependencies": {
"gulp": "4.0.2",
"del": "5.1.0",
"@types/bootstrap": "4.5.0",
"@types/google.visualization": "0.0.53",
"@types/jquery": "3.5.1",
"@types/jqueryui": "1.12.13",
"@types/jquery.datatables": "1.10.36",
"@types/jquery.ui.datetimepicker": "0.3.29"
}
}
Keď kompilujem vo Visual Studio 2019 (najnovšia verzia), kompiluje to perfektne, všetko funguje podľa očakávania.
Do výstupu zostavenia (informácie) som sa však dostal:
Obnovenie balíka pri otvorení projektu je zakázané. Zmeňte nastavenia správy balíkov npm v vlastnostiach projektu, aby ste povolili obnovenie pri otvorení projektu.
Našiel som nastavenie „Obnoviť pri uložení projektu“ a zmenil som ho na true. To pridalo nasledujúce do môjho súboru csproj:
<ProjectExtensions><VisualStudio><UserProperties appsettings_1qaf_1json__JsonSchema="https://gitpod.io/schemas/gitpod-schema.json" NpmRestoreOnProjectOpen="True" /></VisualStudio></ProjectExtensions>
Toto som nahral do Azure DevOps, ale keď to agent zostavuje (niektoré kroky vynechané pre prehľadnosť):
variables:
solution: '**/*.sln'
buildPlatform: 'Any CPU'
buildConfiguration: 'Release'
steps:
- task: NuGetToolInstaller@1
- task: NuGetCommand@2
inputs:
command: 'restore'
restoreSolution: '**/*.sln'
feedsToUse: 'select'
- task: VSBuild@1
inputs:
solution: '$(solution)'
platform: '$(buildPlatform)'
configuration: '$(buildConfiguration)'
clean: true
Dostávam nasledujúcu chybu:
##[error]MyApp\Scripts\MyTypeScript.ts(13,9): Chyba TS2581: Build:Nemožno nájsť názov '$'. Potrebujete nainštalovať definície typov pre jQuery? Skúste
npm i @types/jquery.
Takže hostovaný agent zjavne nezískava typy. Predpokladám, že potrebujem upraviť svoj YAML súbor, ale nie som si istý ako...
Odpoveď č. 1
Podľa chybovej správy a definície Yaml sa zdá, že vám chýbajú kroky NPM Install na inštaláciu potrebných npm balíčkov.
Úloha VSBuild sama dokáže iba obnoviť balíčky NuGet, ale nemôže nainštalovať balíček npm, takže je potrebné pridať ďalšie úlohy na inštaláciu balíčkov npm.
Tu je môj príklad: môžete skúsiť pridať úlohu Npm Install pred úlohu VSBuild.
variables:
solution: '**/*.sln'
buildPlatform: 'Any CPU'
buildConfiguration: 'Release'
steps:
- task: NuGetToolInstaller@1
- task: NuGetCommand@2
inputs:
command: 'restore'
restoreSolution: '**/*.sln'
feedsToUse: 'select'
- task: Npm@1
displayName: 'npm install'
inputs:
workingDir: '$(build.sourcesdirectory)'
verbose: false
- task: VSBuild@1
inputs:
solution: '$(solution)'
platform: '$(buildPlatform)'
configuration: '$(buildConfiguration)'
clean: true
Výsledok:
Mohlo by to fungovať dobre.
