Как заставить Visual Studio 2017 называть "начало пряжи"
У меня есть проект React, и я запускаю его с yarn start
это работает react-scripts start
,
Я хочу использовать Visual Studio 2017 для редактирования кода и запуска приложения, но я не хочу запускаться с использованием VS2017 node.js, я хочу нажать F5 и продолжать использовать реагирующие сценарии.
Есть ли способ сделать это?
## Обновить ##
Для тех, кто хочет лучшего .njsproj
формат файла, есть идея в сообществе разработчиков, которая заслуживает одобрения: https://developercommunity.visualstudio.com/content/idea/351736/use-new-project-format-for-njsproj-files.html
4 ответа
Вы можете добавить его в качестве шага перед сборкой в настройках проекта, но я думаю, что лучший способ это сделать с помощью пользовательских целей в вашем файле.csproj. Я использую Vue вместо того, чтобы реагировать. Это то, что я использую в моем.csproj, и вы можете сделать что-то подобное.
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<Target Name="RunNpmBuild" Condition="'$(Configuration)' != 'ServerOnly'">
<Exec Command="yarn" WorkingDirectory="./www" />
<Exec Command="npm run build" WorkingDirectory="./www" />
</Target>
<Target Name="BeforeBuild" DependsOnTargets="RunNpmBuild">
</Target>
Обратите внимание, что у меня также есть дополнительная конфигурация сборки под названием "ServerOnly", основанная на конфигурации отладки, так что я могу отлаживать f5 только на сервере без необходимости запуска yarn или моей сборки npm.
Другим обходным решением может быть изменение раздела скрипта в package.json на
"scripts": {
"start": "yarn react-scripts start"
...
}
который будет достигнут конфигурацией на Startup.cs.
if (env.IsDevelopment())
{
spa.UseReactDevelopmentServer(npmScript: "start");
}
То же самое для React и всех других проектов одностраничных приложений. У меня есть SPA, написанный в React, и я использовал его в файле csproj
<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 'yarn'. This may take several minutes..." />
<Exec WorkingDirectory="$(SpaRoot)" Command="yarn 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="yarn install" />
<Exec WorkingDirectory="$(SpaRoot)" Command="yarn build" />
<!-- Include the newly-built files in the publish output -->
<ItemGroup>
<DistFiles Include="$(SpaRoot)build\**; $(SpaRoot)build-ssr\**" />
<ResolvedFileToPublish Include="@(DistFiles->'%(FullPath)')" Exclude="@(ResolvedFileToPublish)">
<RelativePath>%(DistFiles.Identity)</RelativePath>
<CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
</ResolvedFileToPublish>
</ItemGroup>
</Target>
Другой способ — использовать Yarn.MSBuild . Объясняется, как в этом ответе .