Javascript 如何在Visual Studio 2017中使用web应用程序发布独立角度组件(njsproj)

Javascript 如何在Visual Studio 2017中使用web应用程序发布独立角度组件(njsproj),javascript,node.js,angular,npm,single-page-application,Javascript,Node.js,Angular,Npm,Single Page Application,我们有一个要求,我们需要发布我们的网站,以测试它的本地(sitecore)。我们有一个叫做webapp的特殊组件 现在,我们引入了一个新组件(njsproj文件),其中包含我们的angular应用程序。当我发布webapp时,angular代码显然没有被编译(npm install build等)并复制到webapp的工件中并发布 在我的CI CD管道中,我已将其规划好并正在运行。。。构建步骤:使用nodejs、npm安装、npm安装、ng构建 我如何正确设置它,以便在本地发布?有什么想法吗 您

我们有一个要求,我们需要发布我们的网站,以测试它的本地(sitecore)。我们有一个叫做webapp的特殊组件

现在,我们引入了一个新组件(njsproj文件),其中包含我们的angular应用程序。当我发布webapp时,angular代码显然没有被编译(npm install build等)并复制到webapp的工件中并发布

在我的CI CD管道中,我已将其规划好并正在运行。。。构建步骤:使用nodejs、npm安装、npm安装、ng构建


我如何正确设置它,以便在本地发布?有什么想法吗

您可以打开njsproj内容并添加此设置

<Target Name="PublishRunWebpack" AfterTargets="ComputeFilesToPublish">
    <!-- As part of publishing, ensure the JS resources are freshly built in production mode -->
    <Exec WorkingDirectory="$(SpaRoot)" Command="npm install" />
    <Exec WorkingDirectory="$(SpaRoot)" Command="npm run build -- --prod" />
    <Exec WorkingDirectory="$(SpaRoot)" Command="npm run build:ssr -- --prod" Condition=" '$(BuildServerSideRenderer)' == 'true' " />

    <!-- Include the newly-built files in the publish output -->
    <ItemGroup>
      <DistFiles Include="$(SpaRoot)dist\**; $(SpaRoot)dist-server\**" />
      <DistFiles Include="$(SpaRoot)node_modules\**" Condition="'$(BuildServerSideRenderer)' == 'true'" />
      <ResolvedFileToPublish Include="@(DistFiles->'%(FullPath)')" Exclude="@(ResolvedFileToPublish)">
        <RelativePath>%(DistFiles.Identity)</RelativePath>
        <CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
      </ResolvedFileToPublish>
    </ItemGroup>
  </Target>

但是我想你可以从创建angular应用程序开始看看这篇文章

谢谢!我目前正在通过发布配置文件运行powershell解决方案。我也将评估此解决方案:)
 "scripts": {
    "ng": "ng",
    "start": "ng serve",
    "build": "ng build",
    "build:ssr": "ng run Angular8:server:dev",
    "test": "ng test", // run this command
    "lint": "ng lint",
    "e2e": "ng e2e"
  }