【问题标题】:Alter source with webpack plugin使用 webpack 插件更改源
【发布时间】:2016-06-10 05:40:02
【问题描述】:

我正在尝试编写一个 webpack 插件,该插件会累积与特定模式匹配的 js require/import 调用,在它们被解析之前将它们从源中删除(因为解析将失败),然后将累积的信息传递给单独的 bundle-建设过程。如何使用插件修改源代码?此外,插件甚至是正确的方法吗?

【问题讨论】:

    标签: webpack


    【解决方案1】:

    您描述的input => output 模式有更多Webpack 加载器的行为。

    什么是 Webpack 加载器?

    一个 webpack loader 最简单的形式是一个函数,它接受一个 source 参数,然后必须返回一个源:

    function allySimpleButAwesomeWebpackLoader(source) {
      var yingSources = source + 'SomeString';
    
      return yingSources; 
    }
    

    什么是 Webpack 插件?

    插件可以完成加载程序无法完成的所有工作。当人们想学习如何为 webpack 插件实现生命周期钩子时,我喜欢将人们推荐给 ProgressPlugin - 它是 webpack 库的一部分。

    插件最简单的形式是一个带有一个原型方法apply 的 ES5 OOP 函数。这个 apply 函数被提供了一个 compiler 变量,作为对 Compiler API 的访问。

    function AllyAwesomePlugin(optionsObject) {
      this.pluginOptions = optionsObject;    
    
    
    }
    
    AllyAwesomePlugin.prototype.apply = function(compiler) {
    
    }
    

    Here 是关于如何编写 Webpack 插件的一些很棒的文档以及有关 Webpack 编译器/插件 API 的更多信息。

    【讨论】:

    • 公平地说,只有在标准 node_modules 查找逻辑可以找到请求的路径时,加载程序才能工作?在这种特殊情况下,我试图加载类似 require('some.namespace') 的东西,而不是通常的 require('path/to/module')。需要额外的逻辑来将 some.namespace 解析为文件路径。根据您的解释和进一步阅读,我认为需要一个插件。你怎么看?
    • 是的,听起来装载机可能是理想的方法。
    • 与上述加载器等效的插件是什么?是否可以通过插件进行某种源到源的映射?
    猜你喜欢
    • 2019-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多