Заставить 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>