This is an example of how to quick start [Webpack Hot Server], without hard-coding them.
node serve.js enjoy it !
- XO Support [✔️]
| { | |
| "name": "your project name", | |
| "version": "0.0.1", | |
| "description": "your project description", | |
| "scripts": { | |
| "dev": "node serve.js" | |
| }, | |
| "keywords": [ | |
| "your keyword" | |
| ], | |
| "author": "you", | |
| "license": "your license", | |
| "bugs": { | |
| "url": "#{your repo}/issues" | |
| }, | |
| "devDependencies": { | |
| "css-loader": "^0.28.4", | |
| "friendly-errors-webpack-plugin": "^1.6.1", | |
| "html-webpack-plugin": "^2.29.0", | |
| "node-sass": "^4.5.3", | |
| "opn": "^5.1.0", | |
| "pug": "^2.0.0-rc.2", | |
| "pug-loader": "^2.3.0", | |
| "sass-loader": "^6.0.6", | |
| "style-loader": "^0.18.2", | |
| "webpack": "^3.2.0", | |
| "webpack-dev-server": "^2.5.1" | |
| } | |
| } |
| const Server = require('webpack-dev-server') | |
| const webpack = require('webpack') | |
| const webpackConfig = require('./webpack.config') | |
| const compiler = webpack(webpackConfig) | |
| const options = { | |
| hot: true, | |
| quiet: true, | |
| historyApiFallback: true, | |
| overlay: true, | |
| noInfo: true, | |
| disableHostCheck: true | |
| } | |
| const server = new Server(compiler, options) | |
| const port = 4000 | |
| const uri = `http://localhost:${port}` | |
| server.listen(port, _ => require('opn')(uri)) |
| // Emmmmmmmmmmmmm _(:зゝ∠)_ | |
| const webpack = require('webpack') | |
| const HTMLWebpackPlugin = require('html-webpack-plugin') | |
| const FriendlyErrorsWebpackPlugin = require('friendly-errors-webpack-plugin') | |
| const { resolve } = require('path') | |
| const resolveHere = path => resolve(__dirname, path) | |
| const docJs = resolveHere('./doc.js') // your entry | |
| const index = resolveHere('./index.pug') // your template | |
| const rules = [ | |
| { | |
| enforce: 'pre', | |
| test: /\.js$/, | |
| exclude: /(node_modules|bower_components)/, | |
| loader: 'xo-loader' | |
| }, | |
| { | |
| test: /\.css$/, | |
| use: ['style-loader', 'css-loader'] | |
| }, | |
| { | |
| test: /\.s(a|c)ss$/, | |
| // yes, i use scss | |
| use: ['style-loader', 'css-loader', 'sass-loader'] | |
| }, | |
| { | |
| test: /\.pug$/, | |
| use: ['pug-loader'] | |
| } | |
| // add more loader here | |
| ] | |
| module.exports = { | |
| entry: ['webpack-dev-server/client?/', 'webpack/hot/dev-server', docJs], | |
| output: { | |
| path: __dirname + '/dist', | |
| filename: 'bundle.js' | |
| }, | |
| module: { rules }, | |
| plugins: [ | |
| new webpack.HotModuleReplacementPlugin(), | |
| new webpack.NoEmitOnErrorsPlugin(), | |
| new HTMLWebpackPlugin({ | |
| inject: true, | |
| template: index | |
| }), | |
| new FriendlyErrorsWebpackPlugin() | |
| ] | |
| } |