我一直在使用create react app。 'npm start'或'yarn start'autoreloads本身工作正常,但现在我还有另一个问题。目前我通过build文件夹在快速服务器上运行应用程序,我使用'npm run build',因为express正在为构建的文件提供服务。有很多api调用需要应用程序以这种方式运行。现在每次手动执行'npm run build'变得乏味。是否有一个简单的方法或解决方法自动构建就像'npm start'而不弹出应用程序(我知道可以弹出并配置webpack来做到这一点,但我不想走那条路)?感谢
答案 0 :(得分:13)
不幸的是,这是你必须自己做的事情。您可以使用像npm-watch这样的工具来完成您想要的任务:
安装npm-watch
npm i --save-dev npm-watch
的package.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,以便它可以在更改时重建您的资产。
答案 1 :(得分:10)
虽然这并没有真正回答您的问题,但您不应该在开发中使用npm run build
。不仅重建速度很慢,而且它还跳过重要的React警告性能和大小,所以你最终会更多地抓挠你的头,并在警告中获得更少的细节。
如果您只需要使用Express use the proxy
feature执行API请求,则可以将npm start
的API请求代理到您的服务器。还有一个tutorial与repository匹配,证明了如何做到这一点。
在制作中,当然,您应该使用npm run build
生成的构建。但是你只需要在部署之前运行它。
答案 2 :(得分:0)
在另一个端口上运行后端。如果你在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}`)
答案 3 :(得分:0)
我也在使用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:运行生产版本
答案 4 :(得分:-4)
1> npm install create-react-app -g
2> create-react-app Your_Apps_Name