Запустите Webpack-Dev-Server в процессе сборки .NET CORE. - PullRequest
0 голосов
/ 22 мая 2018

Хорошо, поэтому я рвал на себе волосы, пытаясь понять это последние пару дней, и кажется, что Visual Studio делает этот ПУТЬ сложнее, чем нужно.

Я хочу, чтобы мойПриложение .NET CORE для запуска моего приложения Vue.js на webpack-dev-server в Debug, в противном случае создайте производственную сборку и поместите ее в файловую структуру, которую она выводит ... Вы могли бы подумать, что я мог бы просто добавить Post-Событие сборки выглядит так:

if $(ConfigurationName) == 'Debug' {
    npm run dev
}

Но как только он попадает в процесс веб-пакета, сборка сервера IIS никогда не продолжается, он просто зависает навсегда после того, как сервер веб-пакета сообщает, что он работает.Я предполагаю, потому что нечего сказать Visual Studio, что процесс завершен?То же самое происходит, если я вместо этого запускаю npm run build для сборки производственной сборки по умолчанию.Единственный способ остановить сборку - это убить все экземпляры Node с помощью taskkill /F /IM node.exe в отдельном экземпляре терминала.

Я могу выполнять эти команды вне Visual Studio просто отлично, и они отлично работают, но вставляя ихв процесс сборки VS просто не работает вообще.

В качестве альтернативы я попытался загрузить шаблон .NET CORE Vue.js и скопировать его функциональность для сборки приложения в файл .csproj и редактирования его в соответствии с размером.мои потребности:

  <Target Name="DebugRunWebpack" BeforeTargets="Build" Condition=" '$(Configuration)' == 'Debug' ">
    <!-- 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." />

    <!-- In development, the dist files won't exist on the first run or when cloning to
        a different machine, so rebuild them if not already present. -->
    <Message Importance="high" Text="Running dev server..." />
    <Exec Command="node node_modules/webpack/bin/webpack.js" />
  </Target>

  <Target Name="PublishRunWebpack" AfterTargets="ComputeFilesToPublish">
    <!-- As part of publishing, ensure the JS resources are freshly built in production mode -->
    <Exec Command="npm install" />
    <Exec Command="node node_modules/webpack/bin/webpack.js --env.prod" />

    <!-- Include the newly-built files in the publish output -->
    <ItemGroup>
        <DistFiles Include="wwwroot\js\**" />
        <ResolvedFileToPublish Include="@(DistFiles->'%(FullPath)')" Exclude="@(ResolvedFileToPublish)">
            <RelativePath>%(DistFiles.Identity)</RelativePath>
            <CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
        </ResolvedFileToPublish>
    </ItemGroup>
  </Target>

, что позволяет правильно собирать файлы (в основном то же, что и npm run build), но сервер dev никогда не запускается.

Должен быть более простой способзаставить это работать, просто используя предварительно собранные команды NPM, но все решения, которые я нашел в StackOverflow, не работают, и то, что должно быть простым решением, становится намного сложнее, чем должно быть.

Любоеидеи?: \

1 Ответ

0 голосов
/ 22 мая 2018

Итак, после тонны Google, я думаю, у меня есть достойное решение, которое объединяет решение Microsoft в их шаблоне с моими собственными сценариями NPM:

<Target Name="RunWebpackServer" AfterTargets="Publish" Condition=" '$(Configuration)' == 'Debug' ">
    <!-- Check if Node.js / NPM is installed -->
        <Exec Command="node --version" ContinueOnError="false">
            <Output TaskParameter="ExitCode" PropertyName="ErrorCode" />
        </Exec>

    <!-- If there's an error, tell the user to install Node -->
        <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." />

    <!-- Clean cache, install packages and run the dev server -->
        <Message Importance="high" Text="Cleaning NPM Cache..." />
        <Exec Command="npm cache clean" />
        <Message Importance="high" Text="Installing NPM Packages..." />
        <Exec Command="npm install" />
        <Message Importance="high" Text="Running Webpack Dev Server..." />
        <Exec Command="npm run dev" />
</Target>

Теперь, кто-нибудь знает, как отключитьУзел dev server когда отладка остановлена?Если я продолжаю останавливаться и работать, я получаю тонну экземпляров Node, которые действительно могут перегружать систему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...