如何更改 PublicPath 以在开发环境中创建 React App

How to change PublicPath for Create React App in Dev Environment

我正在使用 Microsoft.DotNet.Web.Spa.ProjectTemplates::2.0.0-rc1-final which internally uses Create-react-app and AspnetCore.ReactDevelopmentServer

我的开发者。环境正在使用 IIS 托管多个 api's say api1 as http://localhost/api1 and api2 as http://localhost/api2

问题 是如果我从 Microsoft.DotNet.Web.Spa.ProjectTemplates::2.0.0-rc1-final template to http://localhost/myApp 托管我的 React 应用程序 - 它期望文件始终使用 PublicPath“/”提供,因此不起作用。

我从 package.json 知道 Create-react-app's Prod setup uses PublicPath from PUBLIC_URL or Homepage

是否可以修改 create-react-app 设置以在 Dev 中使用自定义 publicpath。环境?

在 github 上进行了更多谷歌搜索和搜索旧问题后,我意识到此功能将在 react-scripts 2.0 中发布,其中应该包括 https://github.com/facebook/create-react-app/pull/1887。这将允许在 create-react-app

中提供文件的地方将子路径包含在 url 中

在 package.json 中使用 "proxy" 将允许创建 React 应用程序以在开发环境中与服务器端通信。我正在使用 VSCode 到 运行 应用程序,并且由于代理值 - 我的应用程序正在与我的 IIS 托管服务通信。

看到这个:https://github.com/facebook/create-react-app/blob/master/packages/react-scripts/template/README.md#proxying-api-requests-in-development

您可以在本地计算机上的 .env.local 中设置 PUBLIC_URL

小心不要在构建发布时设置此 file/variable。您可以在 cra 文档上阅读有关 .env 文件的更多信息。

在我注入项目后,我看到了这些行:

// We use `PUBLIC_URL` environment variable or "homepage" field to infer
// "public path" at which the app is served.

所以,请在环境文件

中更新PUBLIC_URL

在您的 package.json 中添加一个 homepage 键。这将强制使用定义的前缀构建所有文件。

// package.json
{
   "name": "my-project",
   "homepage": "/my-path",
   // ....
}

输出:

/my-path/assets/my-asset.png

有两种方法,看你的需要

  1. 在 .env.development 文件中添加 PUBLIC_URL

    PUBLIC_URL=http://localhost:3000
    
  2. 在package.json

    中添加主页属性
    // package.json
    {
       "name": "my-project",
       "homepage": "/my-path",
       // ....
    }
    

Reference from source