node.js - 尽管项目在 docker 容器上,但如何在我的 IDE 上提供 linting 功能?

标签 node.js docker visual-studio-code docker-compose eslint

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

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

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

这是我的 Github 的副本这样做的 repo 协议(protocol)。

最佳答案

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

现在 Node 将不允许依赖两个不同的文件夹,直到您使用 requirejs 模块并在其中配置多个源。因此,对于您的开发镜像,您想要的是 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_PATH,我们将 node_modules 的位置更改为容器内的 /home/node_modules。然后在 docker-compose 中,我们将其映射到主机上的 ./node_modules。所以我们的第一个 docker-compose run react yarn 将用所有依赖项填充这个文件夹。

从下次开始,您只需运行 docker-compose up。任何时候你想更新依赖项,你要么在 react 容器中运行“yarn”,要么再次运行 docker-compose run ... 命令

关于node.js - 尽管项目在 docker 容器上,但如何在我的 IDE 上提供 linting 功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45893555/

相关文章:

javascript - Nodejs + SocketIO + MySql 连接未正确关闭并创建数据库开销

node.js - 如何使用 Passport 将 "Remember Me"添加到我的应用程序

node.js - 启动nodejs 关于语言结构的任何概述

docker - Docker镜像越来越大

python - 错误 : Directory is not installable. 既不是 'setup.py' 也不是 'pyproject.toml'

visual-studio-code - vscode中的光标覆盖模式?

debugging - VSCode - 使用 vscode-chrome-debug 在 Web 应用程序中调试 iframe

node.js - 在尝试发布操作时,如何在 html 链接中为 "property name"的 Facebook open graph api 调用提供信息

docker - 在Windows 10上运行wolkenkit start时如何解决此docker错误

laravel - VScode 评论快捷键