如何让Visual Studio 2017调用"Yarn开始“

kxxlusnw  于 2022-12-14  发布在  Yarn
关注(0)|答案(4)|浏览(271)

我有一个React项目,我用运行react-scripts startyarn start来运行它。
我想使用Visual Studio 2017编辑代码并运行应用程序,但我不想使用VS 2017 node.js运行,我想按F5键并继续使用react-scripts。
有什么办法吗?

##更新##

对于那些想要更好的.njsproj文件格式的人来说,开发人员社区中有一个想法值得支持:https://developercommunity.visualstudio.com/content/idea/351736/use-new-project-format-for-njsproj-files.html

qmelpv7a

qmelpv7a1#

另一种解决方法是将package.json上的脚本部分更改为

"scripts": {
    "start": "yarn react-scripts start"
     ...
}

这将通过Startup.cs上的配置来实现。

if (env.IsDevelopment())
{
    spa.UseReactDevelopmentServer(npmScript: "start");
}
6psbrbz9

6psbrbz92#

您可以将其作为预构建步骤添加到项目设置中,但我认为更好的方法是在.csproj文件中使用自定义目标。我使用的是vue而不是react。这是我在.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构建。

gpnt7bae

gpnt7bae3#

这对于react和所有其他单页应用程序项目都是一样的。

<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>
hyrbngr7

hyrbngr74#

另一种方法是使用Yarn.MSBuild。在this answer中解释了如何使用。

相关问题