[英]How do I run a specific NPM command before build in ASP.NET Core?
I am trying to run a specific NPM command for Angular within my ASP.NET Core application.我正在尝试在我的 ASP.NET Core 应用程序中为 Angular 运行特定的 NPM 命令。 The NPM is nothing special, it just prepares some files.
NPM 没什么特别的,它只是准备了一些文件。
How can I automate to run the NPM script before each build in ASP.NET Core?如何在每次构建 ASP.NET Core 之前自动运行 NPM 脚本?
The Angular app is within the ClientApp folder, with the package.json in it. Angular 应用程序位于 ClientApp 文件夹中,其中包含 package.json。
If you used the default angular SPA Template it should come with Tasks setup that get executed when you run it (ie before build).如果您使用默认的 angular SPA 模板,它应该附带在您运行它时(即在构建之前)执行的任务设置。
From the default angular SPA template:从默认的角度 SPA 模板:
<PropertyGroup>
<SpaRoot>ClientApp\</SpaRoot>
</PropertyGroup>
<ItemGroup>
<!-- Don't publish the SPA source files, but do show them in the project files list -->
<Content Remove="$(SpaRoot)**" />
<None Remove="$(SpaRoot)**" />
<None Include="$(SpaRoot)**" Exclude="$(SpaRoot)node_modules\**" />
</ItemGroup>
<Target Name="DebugEnsureNodeEnv" BeforeTargets="Build" Condition=" '$(Configuration)' == 'Debug' And !Exists('$(SpaRoot)node_modules') ">
<!-- Ensure Node.js is installed -->
<Exec Command="node --version" ContinueOnError="true">
<Output TaskParameter="ExitCode" PropertyName="ErrorCode" />
</Exec>
<Error Condition="'$(ErrorCode)' != '0'" Text="Node.js is required to build and run this project. To continue, please install Node.js from https://nodejs.org/, and then restart your command prompt or IDE." />
<Message Importance="high" Text="Restoring dependencies using 'npm'. This may take several minutes..." />
<Exec WorkingDirectory="$(SpaRoot)" Command="npm install" />
</Target>
<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>
You can just add a Target
to your .csproj
file that executes a script at certain steps.您只需将
Target
添加到您的.csproj
文件中,该文件在特定步骤执行脚本。 For example, the following will run the installed gulp.cmd
just before the server application is built:例如,以下将在
gulp.cmd
服务器应用程序之前运行已安装的gulp.cmd
:
<Target Name="RunGulp" BeforeTargets="Build">
<Exec Command="node_modules\.bin\gulp.cmd" />
</Target>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.