我们将使用dockersetup开发一个react pwa,并在部署到master分支期间将应用发布到gitlab页面上.
We are going to develop a react pwa with dockersetup and to publish the app on gitlab pages during deployment to master branch.
我在Windows设备上工作,无法在开发人员模式下获得热重载的功能.每当我进行一些更改时,代码都不会重新编译.对于每次更改,我每次都必须 docker-compose up --build
.
I work on a windows device and cant get the feature of hotreloading in dev-mode. Whenever i make some change, the code isnt recompiling. I have to docker-compose up --build
every single time for every change.
是否可以通过 windows/docker/create-react-ap
p安装程序进行热重装?
Is there any possible way to get hotreloading working on a windows/docker/create-react-ap
p setup?
遵循package.json:
Following the package.json:
{ "name": "Appname", "version": "0.1.0", "private": true, "dependencies": { "react": "^16.7.0", "react-dom": "^16.7.0", "react-scripts": "2.1.1" }, "scripts": { "start": "react-scripts start", "build": "react-scripts build", "buildandserver": "react-scripts build && serve -s build", "test": "react-scripts test", "eject": "react-scripts eject" }, "eslintConfig": { "extends": "react-app" }, "browserslist": [ ">0.2%", "not dead", "not ie <= 11", "not op_mini all" ] }
现在使用Dockerfile进行开发设置:
Now the Dockerfile for Dev-Setup:
FROM node:9.6.1 # set working directory RUN mkdir /usr/src/app WORKDIR /usr/src/app # add `/usr/src/app/node_modules/.bin` to $PATH ENV PATH /usr/src/app/node_modules/.bin:$PATH # install and cache app dependencies COPY package.json /usr/src/app/package.json RUN npm install RUN npm install react-scripts@1.1.1 -g # start app CMD ["npm", "start"]
至少是docker-compose来进行dev-setup:
And at least the docker-compose for dev-setup:
version: '3.5' services: App-Name: container_name: App-Name build: context: . dockerfile: devsetup/Dockerfile volumes: - './:/usr/src/app' - '/usr/src/app/node_modules' ports: - '3000:3000' environment: - NODE_ENV=development
我正在设备上为Windows运行docker.我希望有人可以帮助我...谢谢!
Im running docker for windows on the device. I hope anyone can help me out of here...Thanks!
问题主要是由您在Windows上引起的.
The problem is mainly caused by the fact you're on Windows.
为什么?
因为Windows上的Docker不能很好地与卷配合使用.更准确地说-它不会将体积变化通知容器.它确实公开了容器中的最新文件,但是容器内的Linux不知道"文件已更改这一事实,这是触发Webpack重新编译所必需的.
Because Docker on Windows does not work well with volumes. To be more precise - it does not notify the container about the volume change. It does expose up to date files in container but the Linux inside the container "doesn't know" about the fact that file has been changed which is required to trigger webpack recompilation.
解决方案很少
我发现3个的性能要好于2个,但是两者都会牺牲一些性能.
I found 3 working a bit better than 2 but both will have some performance sacrifice.
我希望它会有所帮助.如果您有任何问题,请发表评论,我会尝试进行编辑以更好地解释.
I hope it helps. If you have any questions just comment and I will try to edit to explain better.
这篇关于不能通过create-react-app和docker windows进行webpack hotreload的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程技术网(www.editcode.net)!