Заставить VS2019 использовать Yarn вместо NPM

Когда я запускаю свое веб-приложение ASP.Net Core / React, он использует NPM для загрузки пакетов. Вместо этого я бы хотел использовать Yarn.

Я могу использовать Yarn из командной строки, и он отлично восстанавливает пакеты. Я также установил это расширение, которое отлично работает, используя Yarn для восстановления пакетов, но только когда я вношу изменения в package.json.

Мне нужен способ использовать Yarn, когда я впервые проверяю код и нажимаю зеленую кнопку «Выполнить» в Visual Studio, где он пытается запустить его, понимает, что node_modules отсутствует, а затем пытается загрузить пакеты.

Я подумал, что это может быть случай добавления такого рода вещей в мой раздел скриптов в package.json.

      "start": "yarn react-scripts start",
"build": "yarn react-scripts build",

Но пока он всегда использует NPM.

Предыстория: в ходе обновления некоторых пакетов для исправления некоторых других проблем NPM сделал правильный беспорядок, тогда как Yarn сделал это правильно.

Спасибо

2 ответа

Решение

Ответ кроется в файле CSPROJ. Я не знаком с yarn, чтобы правильно заменить его на npm, но именно так VS может создавать и публиковать проекты dotnet + react / angular / vue.

Если вы сделаете файл -> новое приложение ReactJs, вы можете довольно легко проанализировать CSPROJ.

Например; Здесь VS подключается к BeforeTargets="Build", поэтому, когда проект построен, он может выполнить npm install.

      <Target Name="DebugEnsureNodeEnv" BeforeTargets="Build" Condition=" '$(Configuration)' == 'Debug' And !Exists('$(SpaRoot)node_modules') ">
    ...
    <Exec WorkingDirectory="$(SpaRoot)" Command="npm install" />
</Target>

Я заставил это работать с помощью Yarn.MSBuild . Я установил его (на dotnet 6) с помощью команды:

      dotnet add package Yarn.MSBuild --version 1.22.19

А затем используйтеYarnBuildCommand- внутри.csprojфайл - запуститьyarnкоманды. Например:

        <PropertyGroup>
    <TargetFramework>net6.0</TargetFramework>
    <YarnWorkingDir>$(SpaRoot)</YarnWorkingDir>
    <YarnBuildCommand>install --immutable --immutable-cache --check-cache</YarnBuildCommand>
    <YarnBuildCommand>run build</YarnBuildCommand>
  </PropertyGroup>
Другие вопросы по тегам