使用Angular Application在Azure DevOps中构建发布管道-找不到包含package.json的工作文件夹
我正在从Visual Studio 2017为我的ASP.NET Core Angular应用程序设置发布管道,在npm任务定位package.json文件时遇到了重大问题。我知道这个文件就在那里——它最初在ClientApp文件夹中,我还将它添加到主文件夹和dist文件夹中,以便在我试图找出它不喜欢我的文件的原因时进行测试 我已经尝试了各种可能,包括使用$(System.DefaultWorkingDirectory)。这是我第一次在Azure DevOps工作,也是我第一次尝试设置管道。我一直在谷歌上搜索,甚至尝试重新排队构建管道 我完全有可能设置了错误类型的发布管道。我选择了一个空作业,我有3个任务——npm安装、npm构建和发布工件(我一直在尝试学习一些在线教程)。我还从ASP.Net核心模板创建了构建管道,运行了yaml文件,等等 请注意,我确实安装了node.js和angular,并确保正确的文件位于我的dist文件夹中。我添加了一个web.config文件,将其添加到angular json文件中的我的资产中。我还向package.json文件夹添加了一个小脚本来实际构建使用Angular Application在Azure DevOps中构建发布管道-找不到包含package.json的工作文件夹,angular,azure-devops,pipeline,Angular,Azure Devops,Pipeline,我正在从Visual Studio 2017为我的ASP.NET Core Angular应用程序设置发布管道,在npm任务定位package.json文件时遇到了重大问题。我知道这个文件就在那里——它最初在ClientApp文件夹中,我还将它添加到主文件夹和dist文件夹中,以便在我试图找出它不喜欢我的文件的原因时进行测试 我已经尝试了各种可能,包括使用$(System.DefaultWorkingDirectory)。这是我第一次在Azure DevOps工作,也是我第一次尝试设置管道。我一
"project": {
"name": "Test"
},
"apps": [
{
"root": "src",
"outDir": "dist",
"assets": [
"assets",
"src/web.config"
],
"index": "index.html",
"main": "main.ts",
"polyfills": "polyfills.ts",
"test": "test.ts",
"tsconfig": "tsconfig.app.json",
"testTsconfig": "tsconfig.spec.json",
"prefix": "app",
"styles": [
"styles.css",
"../node_modules/bootstrap/dist/css/bootstrap.min.css"
],
"scripts": [],
"environmentSource": "environments/environment.ts",
"environments": {
"dev": "environments/environment.ts",
"prod": "environments/environment.prod.ts"
}
}
],
我希望npm任务能够找到package.json文件,但实际情况并非如此。请查看这些错误消息,每个错误消息都显示了包含package.json的工作文件夹的不同输入。在一种情况下,它找不到目录。另一方面,它找不到该文件
错误#1:错误:Npm失败,返回代码:4294963238
搭配:
14错误eNONT eNONT:没有这样的文件或目录,请打开
'D:\a\r1\a\package.json'2019-08-10T15:08:12.2500818Z 15错误事件
这与npm无法找到文件有关
及
错误#2:错误:enoint:没有这样的文件或目录,stat
'D:\a\r1\a\Test\ClientApp\dist'
欢迎来到痛苦的Azure devops构建世界。一旦你在一年左右的时间里习惯了它们,它们就不算太糟糕了,但是它们仍然是一个令人头疼的问题,没有什么有用的文档(或者有用的帖子) 理论上,您希望您的构建步骤在最基本的层面上看起来像这样:
- npm安装
- ng构建
- 复制/发布工件
npm任务
-v1*
命令
:安装
包含package.json的工作文件夹
:使用..
导航到Test>Test>ClientApp
(给出您对回购结构的最新评论)
2。ng构建
注意:我们使用一个PS脚本来做一些额外的工作,但它可以归结为运行ng构建
PowerShell
-v2*
类型
:内联
Script
:ng构建--输出路径=$(build.ArtifactStagingDirectory)
Advanced>工作目录
:使用..
导航到您的Test>Test>ClientApp
目录
> Test
> Test
> ClientApp -- top level dir
> src
> e2e
angular.json
package.json
etc...
3。复制/发布工件
发布构建工件
-v1*
发布路径:$(Build.ArtifactStagingDirectory)
选择您的姓名和位置
理论上,这是一个很大的理论,应该是可行的。无论您将Angular应用程序埋得有多深,只要它具有标准Angular cli目录结构,都应该可以从该顶级目录进行构建
> Test
> Test
> ClientApp -- top level dir
> src
> e2e
angular.json
package.json
etc...
欢迎来到痛苦的Azure devops构建世界。一旦你在一年左右的时间里习惯了它们,它们就不算太糟糕了,但是它们仍然是一个令人头疼的问题,没有什么有用的文档(或者有用的帖子) 理论上,您希望您的构建步骤在最基本的层面上看起来像这样:
- npm安装
- ng构建
- 复制/发布工件
npm任务
-v1*
命令
:安装
包含package.json的工作文件夹
:使用..
导航到Test>Test>ClientApp
(给出您对回购结构的最新评论)
2。ng构建
注意:我们使用一个PS脚本来做一些额外的工作,但它可以归结为运行ng构建
PowerShell
-v2*
类型
:内联
Script
:ng构建--输出路径=$(build.ArtifactStagingDirectory)
Advanced>工作目录
:使用..
导航到您的Test>Test>ClientApp
目录
> Test
> Test
> ClientApp -- top level dir
> src
> e2e
angular.json
package.json
etc...
3。复制/发布工件
发布构建工件
-v1*
发布路径:$(Build.ArtifactStagingDirectory)
选择您的姓名和位置
理论上,这是一个很大的理论,应该是可行的。无论您将Angular应用程序埋得有多深,只要它具有标准Angular cli目录结构,都应该可以从该顶级目录进行构建
> Test
> Test
> ClientApp -- top level dir
> src
> e2e
angular.json
package.json
etc...
使用Angular Application在Azure DevOps中构建发布管道-找不到包含package.json的工作文件夹
根据错误消息:
没有这样的文件或目录,请打开“D:\a\r1\a\package.json”
您似乎没有为包含package.json的选项工作文件夹使用正确的路径。您正在工件目录的根文件夹中搜索package.json文件。D:\a\r1\a\
要解决此问题,应指定工作文件夹,如$(System.DefaultWorkingDirectory)\Test\Test\ClientApp
注意:您应该在构建管道时发布项目/解决方案,否则,我们可能无法