Webpack 不排除 node_modules

2024-01-14

我正在使用 webpack 作为我正在构建的 Node 框架(尽管我应该承认,我应该使用 gulp)。当我包含 EJS 模块时,webpack 将其包含在编译的源代码中,即使我明确告诉它排除 node_modules 目录。

module.exports = {
    context: __dirname,
    target: 'node',
    // ...
    output: {
        libraryTarget: 'commonjs'
        // ...
    },
    module: {
        loaders: [
            {
                test: /\.js$/,
                exclude: /node_modules/,
                loader: 'babel-loader?{ "stage": 0, "optional": ["runtime"] }'
            }
        ]
    }
};

正如你所看到的,我对 JS 文件进行了测试,并告诉它排除 node_modules;为什么它忽略我的排除?


从你的配置文件来看,你似乎只是排除了node_modules从被解析为babel-loader, but not免遭捆绑。

为了排除node_modules和本机节点库捆绑,您需要:

  1. Add target: 'node'给你的webpack.config.js。这将把 NodeJs 定义为包应该运行的环境。对于 webpack,它改变了块加载行为、可用的外部模块和生成的代码风格(即使用require()对于 NodeJs)它在捆绑期间使用。

  2. Set the externalPresets of node to true。从 Webpack@5 开始,此配置将排除本机节点模块 https://webpack.github.io/docs/configuration.html#target(路径、文件系统等)免于捆绑。

  3. Use webpack-node-externals https://www.npmjs.com/package/webpack-node-externals为了排除其他node_modules.

所以你的结果配置文件应该是这样的:

var nodeExternals = require('webpack-node-externals');
...
module.exports = {
    ...
    target: 'node', // use require() & use NodeJs CommonJS style
    externals: [nodeExternals()], // in order to ignore all modules in node_modules folder
    externalsPresets: {
        node: true // in order to ignore built-in modules like path, fs, etc. 
    },
    ...
};
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Webpack 不排除 node_modules 的相关文章

随机推荐

  • Redis 键中冒号的用途是什么

    我正在学习如何在我的项目中使用 Redis 我不明白的一件事是键名称中冒号的确切用途 我见过这样的键名 users bob color blue item bag 冒号是否可以将键分类并加快查找键的速度 如果是这样 您可以在命名键时使用多个
  • 仅使用 CSS 使相邻同级元素具有相同的宽度

    我提前表示抱歉 因为出于保密原因 我无法显示我正在处理的代码 图像 但我认为我可以很简单地解释它 我有一个 h1 充当我的网页标题的元素 该标题可以根据用户所在的特定页面的标题更改长度 因此它可以说 主页 也可以说 已保存的项目 等 长度各
  • 特定版本的 HTC DESIRE HD 中 SQLite 中缺少表

    我的应用程序在 asset 文件夹中有一个 SQLite 数据库 当用户启动我的应用程序时 将创建数据库和表 这适用于许多设备 Nexus One Htc Magic SGS X10 甚至 Htc Desire HD v2 2 我的应用程序
  • 大 O 时间复杂度中的指数分母(分数指数)从何而来?

    In algorithm descirptions I sometimes encounter time complexities that look like O n29 20 m7 3 I see where and numerator
  • 为什么 stanford corenlp 性别识别是不确定的?

    我有以下结果 正如您所看到的 名字 edward 有不同的结果 空和男性 好几个名字都发生过这种情况 edward Gender null james Gender MALE karla Gender null edward Gender
  • ps au | 的结果grep ssh 在 Node.js(使用spawn/pipe)与 shell 中的不同

    我正在研究节点流和子进程 所以我想用管道模拟下一个 shell 命令 ps au grep ssh 所以我写了下一个代码 var spawn require child process spawn var ps spawn ps au va
  • 当浏览器不支持 JavaScript 时,如何在单击链接后执行脚本?

    我正在尝试使用如下所示的 Facebook 转换代码 其中包括script 和 noscripts 标签
  • rac_signalForSelector:需要空实现

    我有一个实现 UICollectionViewDelegate 协议的类 我正在使用 rac signalForSelector 来注册选择 如下所示 self rac signalForSelector selector collecti
  • 自定义 MapHttpAttributeRoutes 以进行 Web Api 版本控制

    我正在实施 Web API 版本控制 如下所示Web API 版本控制 http www codeproject com Articles 741326 Introduction to Web API Versioning 我的控制器位于
  • 网站部署后需要强制刷新

    部署新版本的网站后 浏览器会从旧网页的缓存中加载所有内容 直到强制刷新完成 图像是旧的 cookie 是旧的 并且一些 AJAX 部分无法工作 部署后我应该如何继续为用户提供最新版本的页面 该网页是使用IIS7 的ASP Net网页 您可以
  • 可靠地检测用户是否在网页上使用鼠标?

    在我们的页面上 我们有一些长水平滚动的 iframe div 如果用户使用鼠标 他们可以使用滚动条滚动 我们希望他们能够选择 iframe 中的文本 但是 如果他们仅使用触摸 则滚动条会很麻烦 我想在整个事物上覆盖一个透明元素 以使他们能够
  • 如何在 PostgreSQL 中生成虚拟表来生成日期序列?

    我想生成一个日期列表 希望与另一个表连接 但我不知道要使用什么语法 类似于 SELECT dates date transactions account id transactions amount FROM as dates LEFT J
  • 订票系统:数据库访问问题

    我正在创建一个巴士票预订系统 我创建了一个名为 Traveler 的数据库和两个分别名为 Useriden 和 BusDB 的表 在 aspx cs 文件 注册页面 中 我正在检查重复的用户名 但它只是导航到下一页 我已经尝试了一切 但无法
  • Rails 中的composed_of - 何时使用它?

    什么时候应该使用 ActiveRecordcomposed of http apidock com rails ActiveRecord Aggregations ClassMethods composed of类方法 就我个人而言 我认为
  • 将Java程序运行到另一个程序中[重复]

    这个问题在这里已经有答案了 可能的重复 在java程序中执行另一个jar https stackoverflow com questions 1320476 execute another jar in a java program 我尝试
  • 是否可以以编程方式向场景添加行?

    我想在每个 SpecFlow 测试的开头添加相同的行 这一行指定了几个场景的列表 这些场景会随着时间的推移而改变 因此为每个测试维护这个列表是不可行的 例如 Given I have set my site theme to
  • 发送用户 ID 和 access_token

    我正在使用 React 前端在 ASP NET Core 2 1 应用程序中实现 Auth0 一旦用户进行身份验证 我就会得到access token and an id token 我的目的很明确access token是授予对我的 AP
  • Chef-solo 从 bash 脚本获取日志

    我正在通过 Chef 执行 shell 脚本 如下所示 execute Run postgres data migration do command home ubuntu build target infra base psql10 mi
  • 单一职责原则有什么用?

    我试图理解单一职责原则 但我很难理解这个概念 我正在阅读 Lucian Paul Torje Adrian Ianculescu Kamalmeet Singh 所著的 Java 设计模式和最佳实践 一书 在这本书中我正在阅读单一职责原则章
  • Webpack 不排除 node_modules

    我正在使用 webpack 作为我正在构建的 Node 框架 尽管我应该承认 我应该使用 gulp 当我包含 EJS 模块时 webpack 将其包含在编译的源代码中 即使我明确告诉它排除 node modules 目录 module ex