gpt4 book ai didi

Webpack:对于某些模块,保持 'require' 语句不变

转载 作者:行者123 更新时间:2023-12-04 15:53:23 25 4
gpt4 key购买 nike

目标:对于一些匹配模式 P 的库,有 webpack发出/编译require按原样声明。

例子:

  • 假设我有一个 mylib我想通过as-is ,因此 require 在运行时工作。
  • 和这样的代码。

  • var b = require("./some.stuff.that.webpack.should.inline");
    a = require('mylib/should/stay/a/Require');

    我想要看起来像这样的输出
      /******/ ([
    /* 0 */
    /***/ function(module, exports, __webpack_require__) {

    a = __webpack_require__(1);


    /***/ },
    /* 1 */
    /***/ function(module, exports) {

    module.exports = require('mylib/should/stay/a/Require');

    我知道插件可以做到这一点,但我无法拦截正确的事件/理解 the plugin docs

    到目前为止尝试过:
    1. external ...这假设定义在其他地方
    2. IgnorePlugin给出 webpackMissingModule ...与我想要的相反。

    最佳答案

    第一次尝试时,您可能指的是 https://webpack.js.org/configuration/externals/ ,所以很可能你很接近想出一个解决方案。

    老实说,使用 externals可能有点不直观,因为它没有完整记录,并且需要将加载机制指定为字符串的一部分(而不是正确的 js 对象)。

    指示 webpack 留下一些 require按原样,请在您的配置文件中使用类似的内容(使用 v4.25.5 测试):

    const IGNORED = ['dep1', 'dep2']

    module.exports = {
    // ...
    // other options
    // ...
    externals: IGNORED.reduce((acc, p) => (acc[p] = `commonjs ${p}`, acc), {})
    };

    如果您需要更多的灵 active ,请使用 function方法:
     externals: (_, req, cb) => {
    if (IGNORED.indexOf(req) >= 0) {
    return cb(null, `commonjs ${req}`)
    }
    cb()
    }

    如果省略 commonjs全局范围将用于解决依赖关系。

    关于Webpack:对于某些模块,保持 'require' 语句不变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41787000/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com