在 Webpack 中需要保留部分 require 该怎么办

查看:314
本文介绍了在 Webpack 中需要保留部分 require 该怎么办的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

我们在写前端的时候使用 Webpack 打包,然后因为项目需要使用了一个巨大的组件,这个组件内部是通过 require 来动态请求脚本的(不然一次性加载完得发疯)。其中有一部分使用 require 的脚本大概是这样的:

require([
    "something/module1",
    "something/module2"
], function(m1, m2) {
    ...
}

我们之前的前端脚本是通过 Webpack 打包成了单一文件,在引入这一段之后,这一段也被 Webpack 分析出来加载文件进行打包……

现在的需求是,希望 Webpack 能保留这部分 require(....) 语句,不把它模块化,也不翻译成 __webpack_require,这样在脚本发布后可以通过全局的 require 动态加载这些脚本——就这么个需求,找不到实现的方式,仔细研究了 IgnorePluginContextReplacementPlugin 似乎都解决不了问题,不知道该怎么办了,求解……

解决方案

我自己想了个办法,把 require 改成了 _require,然后在 Webpack 里把 _require 定义成全局的 require,貌似解决了:

// 部分 webpack 配置
{
    ......,
    externals: {
        jquery: "jQuery",
        _require: "require"
    },
    plugins: [
        new webpack.ProvidePlugin({
            $: "jquery",
            _require: "_require"
        })
    ],
    ......
}

代码里是这样的

_require([
    "something/module1",
    "something/module2"
], function(m1, m2) {
    ...
}

一开始本来想用 dojo.require 来代替的,发现 dojo.requirerequire 还不一样,dojo.require 貌似没有回调……

这篇关于在 Webpack 中需要保留部分 require 该怎么办的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆