尽管项目位于 docker 容器中,但我如何才能在我的 IDE 上使用 linting 功能?

How can I have linting features available on my IDE despite the project being on a docker container?

我在 docker 上有一个 React Node.js 项目 运行。我能够按照文章 here 使它工作。

问题是我主机上的 node_modules 文件夹是空的。将 volumes 更改为 /www/project/node_modules:app/node_modules 将使模块在 docker 容器中不可用。

我使用的解决方法是通过 运行 npm install --only=dev 在我的主机上只安装依赖项。但是,每次我重新启动容器时它们都会消失。

这是执行此操作的我的 Github 存储库的副本。

所以这里有一些东西,你需要偏离那篇文章。因为那篇文章使用的是匿名卷node_modules。在你的情况下,你希望 devDepencies 也来到你的主机,所以你可以使用它们。

现在,在您使用 requirejs 模块并在其中配置多个源之前,Node 将不允许依赖两个不同的文件夹。因此,对于您的开发映像,您想要的是 yarn 不是 Dockerfile 中的 运行。相反,当容器启动时它是 运行

所以我将 Dockerfile 更改为

FROM node:7.10.1

ENV HOME=/home/app
COPY package.json $HOME/react/
COPY scripts $HOME/react/scripts/
RUN npm install yarn -g
WORKDIR $HOME/react
ENV NODE_PATH=/home/node_modules
VOLUME $NODE_PATH
CMD yarn start:dev

然后更新docker-compose.yml

react:
  build: .
  ports:
   - 3100:3100
  volumes:
    - .:/home/app/react
    - ./node_modules:/home/node_modules

现在,如果您执行 docker-compose up,则 node_modules 为空。那么每当你想刷新包时你应该做什么

docker-compose run react yarn
docker-compose up -d

我们使用 NODE_PATHnode_modules 的位置更改为容器内的 /home/node_modules。然后在 docker-compose 中,我们将其映射到主机上的 ./node_modules。所以我们的第一个 docker-compose run react yarn 将用所有依赖项填充这个文件夹。

从下次开始你只需 运行 docker-compose up。任何时候你想更新依赖项,你可以在 react 容器中 运行 "yarn" 或者你只需​​再次 运行 docker-compose run ... 命令