koa中webpack热加载&&NODE_ENV配置
原文地址 背景
本文主要介绍express以及koa中webpack热加载的实现方式,同时解决 express热加载通过引入webpack热加载的中间件即可,如下所示 server.js var webpack = require('webpack') var webpackDevMiddleware = require('webpack-dev-middleware') var webpackHotMiddleware = require('webpack-hot-middleware') var config = require('./webpack.config') var compiler = webpack(config) app.use(webpackDevMiddleware(compiler,{ noInfo: true,publicPath: config.output.publicPath })) app.use(webpackHotMiddleware(compiler)) 在 var path = require('path') var webpack = require('webpack') module.exports = { devtool: 'cheap-module-eval-source-map',entry: [ 'webpack-hot-middleware/client','./index' ],output: { path: path.join(__dirname,'dist'),filename: 'bundle.js',publicPath: '/static/' },plugins: [ new webpack.optimize.OccurenceOrderPlugin(),new webpack.HotModuleReplacementPlugin() ],module: { loaders: [ { test: /.js$/,loaders: [ 'babel' ],exclude: /node_modules/,include: __dirname } ] } } 完成以上文件的修改即可实现启动node服务器实现热加载 koa中实现热加载
解决办法:直接使用 var expressMiddleware = require('webpack-dev-middleware'); function middleware(doIt,req,res) { var originalEnd = res.end; return function (done) { res.end = function () { originalEnd.apply(this,arguments); done(null,0); }; doIt(req,res,function () { done(null,1); }) } } module.exports = function (compiler,option) { var doIt = expressMiddleware(compiler,option); return function*(next) { var ctx = this; var req = this.req; var runNext = yield middleware(doIt,{ end: function (content) { ctx.body = content; },setHeader: function () { ctx.set.apply(ctx,arguments); } }); if (runNext) { yield *next; } }; }; 在koa中的使用方式 var webpack = require('webpack'); var webpackDevMiddleware = require('koa-webpack-dev-middleware'); var webpackHotMiddleware = require('koa-webpack-hot-middleware'); var config = require('./webpack.config') var compiler = webpack(config); app.use(webpackDevMiddleware(compiler,publicPath: config.output.publicPath })); app.use(webpackHotMiddleware(compiler)); react中
|