如何让 Visual Studio 2017 调用 `yarn start`
How to make Visual Studio 2017 call the `yarn start`
我有一个 React 项目,我 运行 它与 yarn start
运行s 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
您可以将其添加为项目设置中的预构建步骤,但我认为更好的方法是在 .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 只调试服务器,而无需 运行 纱线或我的 npm 构建。
另一种解决方法可能是将 package.json 上的脚本部分更改为
"scripts": {
"start": "yarn react-scripts start"
...
}
将通过 Startup.cs 上的配置实现。
if (env.IsDevelopment())
{
spa.UseReactDevelopmentServer(npmScript: "start");
}
React 和所有其他单页应用程序项目都是一样的。
我有一个用 React 编写的 SPA,我在 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>
我有一个 React 项目,我 运行 它与 yarn start
运行s 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
您可以将其添加为项目设置中的预构建步骤,但我认为更好的方法是在 .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 只调试服务器,而无需 运行 纱线或我的 npm 构建。
另一种解决方法可能是将 package.json 上的脚本部分更改为
"scripts": {
"start": "yarn react-scripts start"
...
}
将通过 Startup.cs 上的配置实现。
if (env.IsDevelopment())
{
spa.UseReactDevelopmentServer(npmScript: "start");
}
React 和所有其他单页应用程序项目都是一样的。 我有一个用 React 编写的 SPA,我在 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>