如何使 create-react-app 自动构建?

IT技术 javascript node.js reactjs express create-react-app
2021-04-02 01:14:50

我一直在使用 create react app 一段时间。'npm start' 或 'yarn start' 自动重新加载本身可以正常工作,但现在我遇到了另一个问题。目前,我通过 build 文件夹在 express 服务器上运行该应用程序,并且我使用“npm run build”,因为 express 正在为构建的文件提供服务。有许多 api 调用需要通过这种方式运行应用程序。现在每次都手动执行'npm run build'变得很乏味。有没有一种简单的方法或解决方法可以像“npm start”一样自动构建而不弹出应用程序(我知道可以弹出并配置 webpack 来做到这一点,但我不想走这条路)?谢谢

6个回答

不幸的是,这是您必须自己做的事情。你可以使用像 npm-watch 这样的工具来完成你想要的:

安装 npm-watch

npm i --save-dev npm-watch

包.json

{
  "name": "react-app",
  "version": "0.1.0",
  "private": false,
  "devDependencies": {
    "npm-watch": "^0.1.8",
    "react-scripts": "0.9.5",
  },
  "dependencies": {
    "react": "^15.4.2",
    "react-dom": "^15.4.2"
  },
  "scripts": {
    "start": "react-scripts start",
    "build": "react-scripts build",
    "test": "react-scripts test --env=jsdom",
    "eject": "react-scripts eject",
    "watch": "npm-watch"
  },
  "watch": {
    "build": "src/"
  }
}

之后,只需用于npm run watch启动 npm-watch 以便它可以在更改时重建您的资产。

更新:

React-scripts 现在包含一个proxy选项,可以将请求代理到不同的主机/端口。例如,如果您的后端路由下的localhost端口上运行,那么您可以将此行添加到您的 package.json: 中然后,您可以像通常在生产中一样提出请求。(来源:https : //create-react-app.dev/docs/proxying-api-requests-in-development9000/api"proxy": "localhost:9000/api"

对我来说:“watch”:{“build”:{“patterns”:[“src”],“extensions”:“js,jsx”,“quiet”:false,“legacyWatch”:true,“delay” : 2500, "runOnChangeOnly": false } },
2021-05-23 01:14:50
这有效。pacakge.json文件是指位于项目根目录下的文件
2021-05-29 01:14:50
谢谢!看起来像一个简单的方法来实现我想要的
2021-06-05 01:14:50
文档在这里:github.com/M-Zuber/npm-watch我安装并运行它,没有错误,但似乎没有效果。它永远不会检测到我的更改。
2021-06-06 01:14:50
有趣,您可以尝试启用 legacyWatch 模式吗?这回落到 chokidar 来轮询文件以进行更改。
2021-06-13 01:14:50

虽然这并不能真正回答您的问题,但您不应该npm run build在开发中使用. 不仅重建速度很慢,而且还会跳过重要的 React 性能和大小警告,因此您最终会更多地挠头,并在警告中获得更少的细节。

如果您只需要使用 Express 执行 API 请求,请使用proxy可让您代理来自服务器的 API 请求功能npm start还有一个带有匹配存储库教程演示了如何做到这一点。

当然,在生产中,您应该使用由npm run build. 但是您只需要在部署之前运行它。

我可以问一个不相关的问题吗?我们正在使用相对路径。我已经阅读了关于绝对路径 wrt src 文件夹问题的多个讨论,似乎在我们的案例中将所有内容移动到 node_modules 中可能不是一个可行的选择。这方面有什么新进展吗?谢谢!@丹·阿布拉莫夫
2021-05-24 01:14:50
感谢丹的官方回答!
2021-06-03 01:14:50
鉴于存在仅适用于 DEV 的错误,似乎有时您确实希望在开发中运行生产。例如github.com/facebook/react/issues/12141
2021-06-09 01:14:50
Angular (2.x+) 和 Vue CLI 都支持 build 函数的 build watch 函数。当 SPA 不是独立的时,这很有用。例如,如果 SPA 托管在 ASP.NET MVC(不是 dontnetcore,因为有模板)或 CMS 页面(如 Sitecore)中的视图中。在这种情况下,您需要在开发模式下构建 + 观看您的应用程序,以便您可以在主机环境中查看它并在保存时反映更改,而无需手动启动构建。不幸的是,调试必须在浏览器的开发工具中完成。
2021-06-22 01:14:50

在不同的端口上运行您的后端。如果您在 express 上运行,请修改文件 bin/www

var port = process.env.PORT || 9000

并在您的 /src 文件夹中创建一个配置文件,您可以在其中配置 api 主机、路由、参数等

//config/index.js
export const Config = {
   protocol: 'http',
   host: window.location.hostname, //or the environment variable
   params: '/api/',
   api: {post:'/posts/'}
}

并在您的调用组件中或在您调用 api 的任何地方

import {Config} from '../config'

axios.get(`${Config.protocol}${Config.host}${Config.params}${Config.api.posts}${some id i guess}`)

我发现的最简单的方法(截至 21 年 10 月 19 日)是使用cra-build-watch完美运行。

我也在使用 create react app,这就是我修改脚本以运行开发项目(windows)、构建生产构建和运行生产构建的方式。

"scripts": {
    "start": "set PORT=8080 && react-scripts start",
    "build": "react-scripts build",
    "deploy": "set PORT=8008 && serve -s build"
  }

npm start :运行项目进行开发(windows) npm run-script build :构建生产构建 npm run-script deploy :运行生产构建

  • npm install -g serve 在运行 npm run-script deploy 之前。
这不能回答 OP 的问题。:) OP 希望通过观察者构建文件,以便在每次发生变化时构建应用程序。
2021-06-19 01:14:50