Webpack 将热加载程序3与Web包和生产中的
我正在使用Webpack和React Hot Loader v3。在开发过程中,它基本上按照预期工作。但是,我希望在输出带有的静态捆绑文件时禁用热加载功能 网页包-进度-p 但我得到的是这种重复的错误 这是我的网页配置Webpack 将热加载程序3与Web包和生产中的,webpack,babeljs,webpack-dev-server,react-hot-loader,Webpack,Babeljs,Webpack Dev Server,React Hot Loader,我正在使用Webpack和React Hot Loader v3。在开发过程中,它基本上按照预期工作。但是,我希望在输出带有的静态捆绑文件时禁用热加载功能 网页包-进度-p 但我得到的是这种重复的错误 这是我的网页配置 var path = require('path'); var webpack = require('webpack'); module.exports = { devServer: { publicPath: '/js/', hot:
var path = require('path');
var webpack = require('webpack');
module.exports = {
devServer: {
publicPath: '/js/',
hot: false,
historyApiFallback: true,
port: process.env.PORT || 3000
},
devtool: 'eval-source-map',
entry: [
'react-hot-loader/patch',
'webpack-dev-server/client?http://localhost:3000',
'webpack/hot/only-dev-server',
'./js/app/index'
],
output: {
path: path.join(__dirname, '/web/js/'),
filename: 'bundle.js',
publicPath: '/js/'
},
plugins: [
new webpack.HotModuleReplacementPlugin()
],
module: {
loaders: [
{
test: /\.css$/,
loader: "style-loader!css-loader?modules",
},
{
test: /\.js$/,
exclude: /(node_modules|bower_components)/,
loader: 'babel',
query: {
presets: ['es2015', 'react', 'stage-0'],
plugins: ['transform-flow-strip-types'],
cacheDirectory: true
},
include: path.join(__dirname, '/js/')
}
]
}
};
有人建议我尝试禁用HotModuleReplacementPlugin,但同样的错误仍然发生。关于我这里缺少的东西,你有什么想法吗?除了去掉HotModuleReplacementPlugin外,你还需要去掉额外的入口点:
// Current
entry: [
'react-hot-loader/patch',
'webpack-dev-server/client?http://localhost:3000',
'webpack/hot/only-dev-server',
'./js/app/index'
],
// Fixed
entry: [
'./js/app/index'
],
除了去掉HotModuleReplacementPlugin,您还需要去掉额外的入口点:
// Current
entry: [
'react-hot-loader/patch',
'webpack-dev-server/client?http://localhost:3000',
'webpack/hot/only-dev-server',
'./js/app/index'
],
// Fixed
entry: [
'./js/app/index'
],
您需要一个单独的生产配置,在条目中不包括dev服务器或热加载程序。有关我的网页包配置的简化版本,请参见下文。如果应用程序使用类似webpack-p的东西运行,那么LAUNCH_命令是production,并使用productionConfig 但这只是一种方法。您还可以为生产使用一个单独的配置文件。类似webpack.prod.config.js的内容。然后,不用运行webpack-p,而是使用webpack-p-config webpack.prod.config.js指定生产配置。同样,您的生产配置不会在条目中包含webpack dev server或热加载程序
import webpack from 'webpack'
import path from 'path'
import HtmlWebpackPlugin from 'html-webpack-plugin'
const HtmlWebpackPluginConfig = new HtmlWebpackPlugin({
template: path.join(__dirname, '/app/index.html'),
filename: 'index.html',
inject: 'body',
})
const PATHS = {
app: path.join(__dirname, 'app'),
build: path.join(__dirname, 'dist'),
}
const LAUNCH_COMMAND = process.env.npm_lifecycle_event
const isProduction = LAUNCH_COMMAND === 'production'
process.env.BABEL_ENV = LAUNCH_COMMAND
const productionPlugin = new webpack.DefinePlugin({
'process.env': {
NODE_ENV: JSON.stringify('production'),
},
})
const base = {
output: {
path: PATHS.build,
filename: 'index_bundle.js',
},
}
const developmentConfig = {
entry: [
'webpack-dev-server/client?http://localhost:8080',
'webpack/hot/only-dev-server',
'./app/index',
],
}
const productionConfig = {
entry: [
'./app/index',
],
}
export default Object.assign({}, base,
isProduction === true ? productionConfig : developmentConfig)
您需要一个单独的生产配置,在条目中不包括dev服务器或热加载程序。有关我的网页包配置的简化版本,请参见下文。如果应用程序使用类似webpack-p的东西运行,那么LAUNCH_命令是production,并使用productionConfig 但这只是一种方法。您还可以为生产使用一个单独的配置文件。类似webpack.prod.config.js的内容。然后,不用运行webpack-p,而是使用webpack-p-config webpack.prod.config.js指定生产配置。同样,您的生产配置不会在条目中包含webpack dev server或热加载程序
import webpack from 'webpack'
import path from 'path'
import HtmlWebpackPlugin from 'html-webpack-plugin'
const HtmlWebpackPluginConfig = new HtmlWebpackPlugin({
template: path.join(__dirname, '/app/index.html'),
filename: 'index.html',
inject: 'body',
})
const PATHS = {
app: path.join(__dirname, 'app'),
build: path.join(__dirname, 'dist'),
}
const LAUNCH_COMMAND = process.env.npm_lifecycle_event
const isProduction = LAUNCH_COMMAND === 'production'
process.env.BABEL_ENV = LAUNCH_COMMAND
const productionPlugin = new webpack.DefinePlugin({
'process.env': {
NODE_ENV: JSON.stringify('production'),
},
})
const base = {
output: {
path: PATHS.build,
filename: 'index_bundle.js',
},
}
const developmentConfig = {
entry: [
'webpack-dev-server/client?http://localhost:8080',
'webpack/hot/only-dev-server',
'./app/index',
],
}
const productionConfig = {
entry: [
'./app/index',
],
}
export default Object.assign({}, base,
isProduction === true ? productionConfig : developmentConfig)