如何使用 webpack 仅捆绑 node_modules?

tof*_*fee 5 docker webpack vue.js

我想捆绑我的 vue ssr server.js,将所有内容包含node_modules到一个文件中

我已经将服务器和客户端代码构建到dist/文件夹中

现在,我想在 docker 镜像中构建代码

我不想node_modules在最终图像中包含文件夹(太大)

所以我决定捆绑我的server.js

node_modules捆绑后,我将在最终图像中删除。

但在我的server.js

const express = require('express')
const bundle = require('./dist/vue-ssr-server-bundle.json')
Run Code Online (Sandbox Code Playgroud)

它需要我的dist/js ,我不想要 webpack 捆绑 dist/ 文件夹内容,node_modules就像express

唯一捆绑node_modules

经过很长时间的等待

我收到了

Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory
Run Code Online (Sandbox Code Playgroud)

这是我的 webpack 配置

const path = require('path')

const resolve = (...dir) => path.resolve(...dir)

module.exports = {
    entry: resolve(__dirname, '../server.js'),
    output: {
        filename: 'bundled-server.js',
        path: resolve(__dirname, '../')
    },
    mode: 'production',
    target: 'node',
    resolve: {
        extensions: ['.tsx', '.ts', '.js'],
        alias: {
        }
    },
    module: {
        rules: [
            {
                use: 'babel-loader',
                test: /\.js$/,
                exclude: /node_module/
            },
        ]
    },
}
Run Code Online (Sandbox Code Playgroud)

我的文件夹结构

在此输入图像描述

我的问题

如何让 webpack 只捆绑node_modulesserver.js,除了我的 dist/ 文件夹?

对不起,我的英语不好

Sou*_*Dey 0

Webpack 捆绑所有源代码并将其放入dist文件夹中。当您使用它构建最终的 Docker 映像时,您需要忽略node_modules和其他不必要的目录。这就是该.dockerignore文件为您提供帮助的地方。就像 一样.gitignore.dockerignore在构建过程中忽略文件。在文件中提及您要忽略的文件.dockerignore