繁体   English   中英

使用全局 npm 包而不是再次安装它

[英]Use global npm package instead of installing it again

当我们运行npm i时,有什么方法可以使用全局安装的包而不是安装相同的包。 我有以下上下文:我已经创建了一个已经安装了一个包的 docker 镜像(Dockerfile 中的 install 语句)。 当我使用具有 javascript 项目的 volumen 运行容器并运行npm i时,似乎再次安装了包。

是否可以使用全局包而不是再次安装它?

如果你不想在 docker 构建 node_modules 期间再次安装,你可以使用你的 node_modules 创建一个基础镜像。

FROM node:18-alpine3.16
WORKDIR /usr/src/app
COPY package*  ./
RUN  npm install 
docker build -t myimage .

您可以标记并将其推送到注册表 (dockerhub) 或在本地将其用作新的基础映像。

FROM myimage
WORKDIR /usr/src/app #Here are now already your node_modules
COPY . .  # copy your code inside the image, or map the folder if you are in 
          # development

RUN npm run build # if you need a build
CMD ["mycommand","myargument"]

请注意这一点,但如果添加或更新节点模块,则需要重建基础映像。

还可以考虑使用 npm ci 而不是 npm install。 这样,每次重新安装节点模块时,您都可以保留相同版本的节点模块。

处理节点模块和基础镜像的安全问题。

运行docker scan myimage ,定期获取您的 node_modules 或基础图像需要更新的信息。

在开发过程中,将您的代码文件夹映射到 docker 映像绝对没问题。 开发时甚至不需要在映像中复制您的代码。 只需将其映射到您的 WORKDIR 中即可。

经过研究,似乎以下代码解决了我的问题

WORKDIR /dir

RUN npm install package
RUN npm cache add package
RUN rm -rf *

WORKDIR /  

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM