如何使用 webpack 将多个节点 js 文件组合成一个包

Posted

技术标签:

【中文标题】如何使用 webpack 将多个节点 js 文件组合成一个包【英文标题】:How to combine multiple node js file into a single bundle using webpack 【发布时间】:2021-12-21 20:41:29 【问题描述】:

我正在尝试从 nodejs 应用程序中的多个 javascript 文件创建单个包。

我使用的配置有点像这样:

const path = require('path')
const nodeExternals = require('webpack-node-externals')

'use strict';

module.exports = 
    externals: [nodeExternals()],
    entry: './lib/index.js',
    output: 
        iife: false,
        path: path.resolve(__dirname, 'lib'),
        filename: 'bundle.js', // <-- Important
    ,
    target: 'node', // <-- Important
;

问题是当我运行bundle.js command 而不是让它按照命令所说的那样运行时,我得到了流式传输到终端的文件的完整源。

该文件似乎包含某种立即执行的 IIFE。我在 webpack 配置中将 iife: false 设置为 false,但这也没有任何区别。

有什么想法可能是错的吗?

编辑:

我通过添加以下内容来调用 webpack: bundle: webpack --config webpack.config.jspackage.json 中的脚本部分,然后我运行 npm run bundle

【问题讨论】:

您能分享一下您是如何调用webpack 命令的吗? 更新了故事以包含此内容 很奇怪。它似乎对我有用,因为它与 Webpack 版本 5 没有任何问题。 【参考方案1】:

作为替代方案,您可以使用 https://www.npmjs.com/package/@vercel/ncc 包将所有 Node.js 代码捆绑到一个文件中。

【讨论】:

以上是关于如何使用 webpack 将多个节点 js 文件组合成一个包的主要内容,如果未能解决你的问题,请参考以下文章

如何理解webpack中的js文件的打包

如何使用 webpack 更新多个捆绑的 js 文件?

使用 webpack 使用基于节点环境的特定文件

如何在 webpack encore 文件之外使用节点模块?

如何将使用 Webpack 的节点部署到 heroku

如何将 node.js 模块导入 node.js 模块