如何仅使用webpack捆绑包node_modules?

时间:2018-12-25 03:03:49

标签: docker vue.js webpack

我想将我的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,我不希望Webpack捆绑包dist /文件夹内容仅node_modulesexpress

仅捆绑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 :(得分:0)

Webpack捆绑了所有源代码,并将其放入dist文件夹中。从中构建最终的Docker映像时,您想忽略node_modules和其他不必要的目录。这就是.dockerignore文件的帮助所在。就像.gitignore一样,.dockerignore在构建过程中会忽略文件。在.dockerignore文件中提及要忽略的文件。