如何使用Webpack仅打包node_modules?

5
我希望将我的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')

需要我的 "dist/" JS 文件,但我不想只打包 "node_modules" 中的内容(如 "express"),而是要包含整个 "dist/" 文件夹。
只需打包 "node_modules" 文件夹即可。
经过漫长的等待之后,
我收到了。
Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory

这是我的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/
            },
        ]
    },
}

我的文件夹结构

enter image description here

我的问题

如何让webpack只打包node_modulesserver.js,而不包括我的dist/文件夹?

对于我的糟糕的英语表示抱歉。

1个回答

0

Webpack将所有源代码捆绑并放入dist文件夹中。当您构建最终的Docker镜像时,您希望忽略node_modules和其他不必要的目录。这就是.dockerignore文件派上用场的地方。就像.gitignore一样,.dockerignore在构建过程中忽略文件。在.dockerignore文件中提到您想要忽略的文件。


如何忽略 dist/ 文件夹?我不希望 webpack 打包我的导入的 dist 文件夹中的文件,例如 require('./dist/......')我想要让 webpack 忽略所有以 ./dist 开头的导入我只想让 webpack 打包 node_modulesserver.js 本身 - nuclear

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接