Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 用于定义模块的Webpack自定义插件_Node.js_Webpack_Modernizr_Webpack 2 - Fatal编程技术网

Node.js 用于定义模块的Webpack自定义插件

Node.js 用于定义模块的Webpack自定义插件,node.js,webpack,modernizr,webpack-2,Node.js,Webpack,Modernizr,Webpack 2,我正在尝试为Webpack编写一个小的定制插件,它将构建一个定制的Modernizer对象并公开它。我已经找到了和,但加载程序似乎有问题(即使我直接传递选项,它也需要一个空文件.modernizerrc),插件只能创建一个单独的文件 我从前面提到的插件中借用了一些代码,但无法理解最后一步(如何在构建文件中公开modernizer): 网页包配置 然而,它似乎创建了一个单独的modernizr.js文件,而我希望modernizr代码嵌入到我的输出文件中。非常感谢您的帮助 const modern

我正在尝试为Webpack编写一个小的定制插件,它将构建一个定制的Modernizer对象并公开它。我已经找到了和,但加载程序似乎有问题(即使我直接传递选项,它也需要一个空文件
.modernizerrc
),插件只能创建一个单独的文件

我从前面提到的插件中借用了一些代码,但无法理解最后一步(如何在构建文件中公开
modernizer
):

网页包配置 然而,它似乎创建了一个单独的
modernizr.js
文件,而我希望
modernizr
代码嵌入到我的输出文件中。非常感谢您的帮助

const modernizr = require('modernizr'),
  ConcatSource = require('webpack-sources/lib/ConcatSource'),
  CachedSource = require('webpack-sources/lib/CachedSource');

class BuildModernizrPlugin {
  constructor(props = {}) {
    let plugin = this;
    plugin._props = props;
  }

  apply(compiler) {
    let plugin = this;

    compiler.plugin('after-compile', (compiler, callback) => {
      modernizr.build(plugin._props, result => {
        plugin._modernizr = result;
        callback();
      });
    });

    compiler.plugin('emit', (compilation, callback) => {
      let source = new ConcatSource();
      source.add(plugin._modernizr);
      compilation.assets['modernizr.js'] = new CachedSource(source);
      callback();
    });
  }
}
{
  //...
  plugins: [
    new BuildModernizrPlugin({
      options: [
        'setClasses'
      ],
      'feature-detects': [
        'es6/promises'
      ]
    })
  ]
}