2016-12-21 4 views
1

webpackを使用してフロントエンドコードを構築するASP.NET Core webappがあります。 WebPACKのは、今度は私のproject.jsonでスクリプト部を介して呼び出されたNPMを介して呼び出されます。project.jsonスクリプトからビルドに失敗する方法

{ 
    ... 
    "scripts": { 
    "postcompile": "npm run build" 
    } 
} 

ビルドが失敗した場合、「NPM実行ビルド」コールが1に、プロセスの終了コードを設定します。それにもかかわらず、コマンドラインまたはVisual Studioから "dotnet build"を実行することは失敗しません。これはnpmエラーを出力しますが、ビルドに失敗することはありません。

ステップが失敗した場合に実際にビルドに失敗するproject.jsonファイルで "npm run build"を呼び出すような追加ビルドステップを設定するにはどうすればよいですか?

答えて

-1

エラーがdocsから

を構築するのWebPACKからのものである場合、あなたはWebPACKのコンフィグにtruebailプロパティを設定していることを確認してください:

保釈
レポートハードとして最初のエラーエラーではなく、許容します。

+0

私はhttps://www.npmjs.com/package/webpack-fail-pluginを使用しています - これで十分だと思いました。 とにかく、--bailオプションも追加しましたが、成功しませんでした。私が言ったように、Webpackのビルド後にプロセス終了コードはすでに1に設定されていますが、まだドットネットビルドは失敗しません。私は保釈オプションを正しく設定しましたか?私のpackage.jsonのように見えます。 "ビルド": "webpack --config builds/webpack.prod.config.js --bail"、 – Schweder

+0

これはwebpackで十分です。しかし、私はなぜ 'ドットネットビルド'がそれを拾っていないのか分からない – jontem

+0

私も。だから私はこの質問を作成していました:-) 「実行後ビルド」は「ポストコンパイル」から呼び出されるべきではありませんが、別のスクリプトエントリポイントから呼び出されるべきですか? – Schweder

0

ビルドサーバでCIビルドと全く同じ問題が発生しました。ビルド中にエラーが発生しましたが、CIビルドは失敗しませんでした。 project.json(dotnet.exeはスクリプトの終了コードを無視する)のスクリプトを使用して問題の解決策を見つけることができませんでしたが、.xprojファイルで解決する方法が見つかりました。

ASP.NETコアプロジェクトは現在、プロジェクトごとに2つのプロジェクトファイルproject.jsonと.xprojで構成されています。両方とも、何らかの種類のユーザ定義スクリプトを実行することができます。そこで私はスクリプトを.xprojファイルに組み込み、project.jsonからそれらを削除しました。主な問題は、.NETコードをコンパイルする前にそれらを呼び出す作業方法を見つけることでした。ここに私の.xprojファイルがあります。ターゲットのBuildManagementConsoleを確認します。

主な問題は、 'dotnet build'を使用してプロジェクトをビルドできないことです。 'msbuild .xproj'コマンドラインを使用する必要があります。私の意見では、このソリューションは、MicrosoftがASP.NETコアの次のバージョンでそれを削除するため、project.jsonにスクリプトを組み込むよりも優れています。

<?xml version="1.0" encoding="utf-8"?> 
<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 
    <PropertyGroup> 
    <VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">14.0</VisualStudioVersion> 
    <VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath> 
    <TypeScriptCompileBlocked>true</TypeScriptCompileBlocked> 
    </PropertyGroup> 
    <Import Project="$(VSToolsPath)\DotNet\Microsoft.DotNet.Props" Condition="'$(VSToolsPath)' != ''" /> 
    <PropertyGroup Label="Globals"> 
    <ProjectGuid>d5feb23f-aaaa-4852-89c2-e1eef6ab52a8</ProjectGuid> 
    <RootNamespace>ManagementConsole</RootNamespace> 
    <BaseIntermediateOutputPath Condition="'$(BaseIntermediateOutputPath)'=='' ">.\obj\</BaseIntermediateOutputPath> 
    <OutputPath Condition="'$(OutputPath)'=='' ">.\bin\</OutputPath> 
    <TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion> 
    <SccProjectName>SAK</SccProjectName> 
    <SccProvider>SAK</SccProvider> 
    <SccAuxPath>SAK</SccAuxPath> 
    <SccLocalPath>SAK</SccLocalPath> 
    </PropertyGroup> 
    <PropertyGroup> 
    <SchemaVersion>2.0</SchemaVersion> 
    </PropertyGroup> 
    <ItemGroup> 
    <DnxInvisibleContent Include=".bootstraprc" /> 
    <DnxInvisibleContent Include=".npmrc" /> 
    <DnxInvisibleContent Include="npm-debug.log" /> 
    </ItemGroup> 
    <ItemGroup> 
    <DnxInvisibleFolder Include=".nuget\" /> 
    </ItemGroup> 
    <Target Name="BuildManagementConsole" BeforeTargets="Build"> 
    <Exec Command="dotnet restore" /> 
    <Exec Command="npm cache clean --force" /> 
    <Exec Command="npm install" /> 
    <Exec Command="npm run build:$(Configuration)" /> 
    </Target> 
    <Import Project="$(VSToolsPath)\DotNet.Web\Microsoft.DotNet.Web.targets" Condition="'$(VSToolsPath)' != ''" /> 
</Project> 
関連する問題