Webpack-在开发和生产中复制文件

时间:2018-12-12 15:14:24

标签: webpack webpack-dev-server webpack-plugin

我写了一个插件,其功能类似于copy-webpack-plugin,但提供了一些我需要的扩展功能。本质上,它只是将文件从src复制到dist并对其执行一些操作。

当我运行生产版本时,它运行良好,但是在我的开发版本中,由于我使用的是devServer,并且所有内容都在内存中,所以这是行不通的。

我该如何解决?

1 个答案:

答案 0 :(得分:0)

事实证明,解决方案非常简单。您所需要做的就是使用compliation.assets添加更多文件,而不是像fs.writeFile这样的手动文件。无论您是从内存中还是从文件系统中提供文件,这都将起作用。

例如,下面的代码将在path/to/file.ext中创建一个文件,其中包含Hello World!

class MyCoolPlugin {
    apply(compiler) {
        compiler.hooks.emit.tapAsync('MyCoolPlugin', (compilation, done) => {
            compilation.assets['path/to/file.ext'] = {
                source: () => 'Hello World!', // The file's content
                size: () => 10 // Should be the byte size of the content
            };
            done();
        });
    }
}