54 lines
1.4 KiB
JavaScript
54 lines
1.4 KiB
JavaScript
const webpack = require('webpack');
|
|
const WebpackDevServer = require('webpack-dev-server');
|
|
const BundleTracker = require('webpack-bundle-tracker');
|
|
const os = require('os');
|
|
const dns = require('dns');
|
|
|
|
process.env.NODE_ENV = 'development';
|
|
|
|
const config = require('./webpack.config');
|
|
|
|
dns.lookup(os.hostname(), function(err, localhost, fam) {
|
|
localhost = "127.0.0.1"
|
|
let fileLoader = `file-loader?name=[name].[ext]&publicPath=http://${localhost}:8000/static/fonts/`;
|
|
config.module.rules = config.module.rules.map(rule => {
|
|
if (typeof rule.use === 'string') {
|
|
rule.use = fileLoader;
|
|
}
|
|
return rule;
|
|
});
|
|
|
|
config.entry.main = [
|
|
`webpack-dev-server/client?http://${localhost}:3000`,
|
|
'webpack/hot/dev-server',
|
|
'./assets/js/index.js'
|
|
];
|
|
config.output.publicPath = `http://${localhost}:3000/assets/bundles/`;
|
|
config.plugins = [
|
|
new webpack.HotModuleReplacementPlugin(),
|
|
new webpack.NoEmitOnErrorsPlugin(),
|
|
new BundleTracker({ filename: './webpack-stats.json' })
|
|
];
|
|
|
|
new WebpackDevServer(webpack(config), {
|
|
publicPath: config.output.publicPath,
|
|
headers: {
|
|
'Access-Control-Allow-Origin': `http://${localhost}:8000`,
|
|
'Access-Control-Allow-Credentials': 'true'
|
|
},
|
|
hot: true,
|
|
inline: true,
|
|
historyApiFallback: true,
|
|
stats: {
|
|
colors: true
|
|
},
|
|
sockPort: 3000
|
|
}).listen(3000, '0.0.0.0', function(err) {
|
|
if (err) {
|
|
console.log(err);
|
|
}
|
|
|
|
console.log(`Listening at ${localhost}:3000`);
|
|
});
|
|
});
|