使用节点配置替换Webpack热模块?

时间:2016-10-18 13:14:49

标签: javascript node.js typescript webpack

所以我看了webpack HMR的文档,似乎找不到热模块加载服务器端文件的方法。例如,我有一个用typescript编写的配置文件,我需要能够在更改到该配置文件时重新加载。所以我需要在编译后更新。文档都倾向于使用webpack dev服务器,除了这个HMR,它没有解释我的webpack配置应该是什么样子才能使用HMR。任何帮助或建议都会很棒。

1 个答案:

答案 0 :(得分:0)

您可以采用与客户端HMR非常类似的方式进行设置:

1)目标节点':

// webpack.config.js
module.exports = {
    ...
    target: 'node'
    ...
}

2)通过cli选项--hot或通过config:

启用热模块替换
// webpack.config.js
module.exports = {
    ...
    plugins: [new webpack.HotModuleReplacementPlugin()]
    ...
};

3)在您的入口点包含HMR管理代码:

// webpack.config.js
module.exports = {
    ...
    entry: [
        'webpack/hot/poll?1000', // This differs from client side HMR
        'app.js'
    ]
    ...
};

4)使用module.hot.accept

教您的代码如何进行热更新
  

注意:这通常是由装载机抽象出来的。

// app.js
let config = require('./config');
setInterval(() => {
    console.log(config.FOO_BAR);
}, 2000);

// NOTE: This would need to be done everywhere you use './config' so you might want to create a loader to generate it.
if (module.hot) {
    module.hot.accept('./config', () => {
        config = require('./config');
    });
}

4)以监视模式编译捆绑包。