忽略缺少的依赖项

时间:2016-04-29 12:21:09

标签: javascript npm webpack

我在编译捆绑包时遇到了一些问题。基本上我有webpack 1.13和npm3,当我尝试捆绑我的文件时,我得到错误,找不到一些依赖项。更具体地说,我导入了log4js包,我得到了

ERROR in ./~/log4js/lib/appenders/hipchat.js
Module not found: Error: Cannot resolve module 'hipchat-client' in c:\vhosts\not
ifications-daemons\node_modules\log4js\lib\appenders
 @ ./~/log4js/lib/appenders/hipchat.js 2:20-45

ERROR in ./~/log4js/lib/appenders/loggly.js
Module not found: Error: Cannot resolve module 'loggly' in c:\vhosts\notificatio
ns-daemons\node_modules\log4js\lib\appenders
 @ ./~/log4js/lib/appenders/loggly.js 3:11-28

ERROR in ./~/log4js/lib/appenders/mailgun.js
Module not found: Error: Cannot resolve module 'mailgun-js' in c:\vhosts\notific
ations-daemons\node_modules\log4js\lib\appenders
 @ ./~/log4js/lib/appenders/mailgun.js 5:14-35

ERROR in ./~/log4js/lib/appenders/slack.js
Module not found: Error: Cannot resolve module 'slack-node' in c:\vhosts\notific
ations-daemons\node_modules\log4js\lib\appenders
 @ ./~/log4js/lib/appenders/slack.js 2:12-33

ERROR in ./~/log4js/lib/appenders/smtp.js
Module not found: Error: Cannot resolve module 'nodemailer' in c:\vhosts\notific
ations-daemons\node_modules\log4js\lib\appenders
 @ ./~/log4js/lib/appenders/smtp.js 4:13-34

问题是我不需要捆绑中的所有可选模块。同样适用于sequelize,其中webpack尖叫我没有它支持的所有驱动程序,即使我只需要mysql驱动程序。是否有任何配置选项或插件只是忽略所有缺少的依赖项,并让捆绑包编译没有它们?

3 个答案:

答案 0 :(得分:1)

在 webpack 5 及更高版本中,IgnorePlugin 的用法发生了变化。更新示例:

const webpack = require('webpack');
module.exports = {
  plugins: [
    new webpack.IgnorePlugin({ resourceRegExp: /^/u, contextRegExp: /log4js/u })
  ],
};

或者:

const webpack = require('webpack');
module.exports = {
  plugins: [
    new webpack.IgnorePlugin({ resourceRegExp: /^(hipchat-client|loggly|mailgun-js|slack-node|nodemailer)$/u })
  ],
};

答案 1 :(得分:0)

是的,有一个插件可以帮助你解决这个问题。您需要添加以下内容:

new webpack.IgnorePlugin(new RegExp("/(node_modules|nodemailer)/"))

到你的webpack插件。可以在此处找到更多信息:https://webpack.github.io/docs/list-of-plugins.html#ignoreplugin

答案 2 :(得分:0)

当我尝试捆绑一些依赖于log4j的软件包时,我遇到了同样的错误。我的webpack版本是4.5.0。感谢@Tony Tai Nguyen的回答,我修复了webpack ignore插件的特定错误,并将以下配置添加到我的webpack.config.js文件中。

const webpack = require('webpack');
module.exports = {
  plugins: [
    new webpack.IgnorePlugin(/log4j/)
  ],
};