Javascript 如何在网页包设置中使用CodeMirror运行模式独立版本

Javascript 如何在网页包设置中使用CodeMirror运行模式独立版本,javascript,webpack,codemirror,Javascript,Webpack,Codemirror,我使用CodeMirror作为一个简单的语法高亮器(≠ 代码编辑器)和。为了给用户节省一些带宽,我想切换到runmode standlone.js版本,它也包含在包中,但不附带整个codemirr电源和重量 问题是,codemirr库被列为每个模式的依赖项(lang包): 您必须以某种方式说服捆绑程序加载运行模式独立垫片,而不是该依赖项的常规核心库。-作者 有人做到了吗? 我已经试过了 注意,我设置了一个别名,因此当我引用codemirr时,它会导入独立版本(仅供参考,因为我也尝试过不使用它)

我使用CodeMirror作为一个简单的语法高亮器(≠ 代码编辑器)和。为了给用户节省一些带宽,我想切换到
runmode standlone.js
版本,它也包含在包中,但不附带整个
codemirr
电源和重量

问题是,
codemirr
库被列为每个
模式的依赖项(lang包):

您必须以某种方式说服捆绑程序加载运行模式独立垫片,而不是该依赖项的常规核心库。-作者

有人做到了吗?


我已经试过了 注意,我设置了一个别名,因此当我引用
codemirr
时,它会导入独立版本(仅供参考,因为我也尝试过不使用它)

  • 脚本加载程序
    导入加载程序
    的所有组合,以尝试像正常脚本一样执行模式模块
  • 与建议忽略
    moment.js
    locales(,使用
    webpackingoreplugin
  • 所以我试着让它忽略

    new webpack.IgnorePlugin({
      resourceRegExp: /^\.\.\/lib\/codemirror$/,
      contextRegExp: /^codemirror\/mode\/(.*)/
    });
    
    设置详细信息 使用
    codemirror@5.47.0
    webpack@4.29.6

    配置要使用的网页包

    externals配置选项提供了一种从输出捆绑包中排除依赖项的方法。相反,创建的捆绑包依赖于消费者(任何最终用户应用程序)环境中存在的依赖项

    import "codemirror";
    // same as import "codemirror/addon/runmode/runmode-standalone.js";
    
    // nope
    import "script-loader!codemirror/mode/javascript/javascript";
    
    // nope
    import "imports-loader?define=>false!codemirror/mode/javascript/javascript";
    
    // nope
    import "imports-loader?define=>false,module=>false,require=>false!codemirror/mode/javascript/javascript";
    
    
    // codemirror/mode/javascript/javascript.js import looks like
    
    (function(mod) {
      if (typeof exports == "object" && typeof module == "object") // CommonJS
        mod(require("../../lib/codemirror"));
      else if (typeof define == "function" && define.amd) // AMD
        define(["../../lib/codemirror"], mod);
      else // Plain browser env
        mod(CodeMirror);
    })(function(CodeMirror) {
    ...
    
    new webpack.IgnorePlugin({
      resourceRegExp: /^\.\.\/lib\/codemirror$/,
      contextRegExp: /^codemirror\/mode\/(.*)/
    });
    
    externals: {
      '../lib/codemirror': 'CodeMirror', // for mode/meta.js
      '../../lib/codemirror': 'CodeMirror' // for mode/[mode]/[mode].js
    }