You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

321 lines
21 KiB
JavaScript

'use strict'
const utils = require('./utils')
const webpack = require('webpack')
const config = require('../config')
const merge = require('webpack-merge')
const path = require('path')
const baseWebpackConfig = require('./webpack.base.conf')
const CopyWebpackPlugin = require('copy-webpack-plugin')
const HtmlWebpackPlugin = require('html-webpack-plugin')
const FriendlyErrorsPlugin = require('friendly-errors-webpack-plugin')
const portfinder = require('portfinder')
const HOST = process.env.HOST
const PORT = process.env.PORT && Number(process.env.PORT)
const devWebpackConfig = merge(baseWebpackConfig, {
module: {
rules: utils.styleLoaders({
sourceMap: config.dev.cssSourceMap,
usePostCSS: true
})
},
// cheap-module-eval-source-map is faster for development
devtool: config.dev.devtool,
// these devServer options should be customized in /config/index.js
devServer: {
clientLogLevel: 'warning',
historyApiFallback: {
rewrites: [{
from: /.*/,
to: path.posix.join(config.dev.assetsPublicPath, 'index.html')
}, ],
},
// https:true,
hot: true,
contentBase: false, // since we use CopyWebpackPlugin.
compress: true,
host: HOST || config.dev.host,
port: PORT || config.dev.port,
open: config.dev.autoOpenBrowser,
overlay: config.dev.errorOverlay ?
{
warnings: false,
errors: true
} :
false,
publicPath: config.dev.assetsPublicPath,
proxy: config.dev.proxyTable,
quiet: true, // necessary for FriendlyErrorsPlugin
watchOptions: {
poll: config.dev.poll,
},
},
plugins: [
new webpack.DefinePlugin({
'process.env': require('../config/dev.env')
}),
new webpack.HotModuleReplacementPlugin(),
new webpack.NamedModulesPlugin(), // HMR shows correct file names in console on update.
new webpack.NoEmitOnErrorsPlugin(),
// https://github.com/ampedandwired/html-webpack-plugin
new HtmlWebpackPlugin({
filename: 'index.html',
template: 'index.html',
inject: true
}),
// copy custom static assets
new CopyWebpackPlugin([{
from: path.resolve(__dirname, '../static'),
to: config.dev.assetsSubDirectory,
ignore: ['.*']
}])
]
})
module.exports = new Promise((resolve, reject) => {
portfinder.basePort = process.env.PORT || config.dev.port
portfinder.getPort((err, port) => {
if (err) {
reject(err)
} else {
// publish the new Port, necessary for e2e tests
process.env.PORT = port
// add port to devServer config
devWebpackConfig.devServer.port = port
// Add FriendlyErrorsPlugin
devWebpackConfig.plugins.push(new FriendlyErrorsPlugin({
compilationSuccessInfo: {
// messages: [
// `
// 鼎鼎鼎鼎鼎鼎鼎鼎鼎鼎鼎鼎
// 鼎鼎鼎鼎鼎鼎鼎鼎鼎鼎鼎鼎 鼎鼎鼎鼎鼎鼎鼎鼎鼎鼎鼎鼎
// 鼎鼎鼎鼎鼎鼎鼎鼎鼎鼎鼎 鼎鼎
// 鼎鼎鼎 鼎鼎鼎鼎鼎鼎鼎鼎鼎鼎鼎鼎
// 鼎鼎鼎 鼎鼎鼎鼎鼎鼎鼎鼎鼎鼎鼎鼎
// 鼎鼎鼎 鼎鼎 鼎鼎
// 鼎鼎鼎 鼎鼎 鼎鼎鼎 鼎鼎
// 鼎鼎鼎 鼎鼎 鼎鼎鼎 鼎鼎
// 鼎鼎鼎 鼎鼎 鼎鼎鼎 鼎鼎
// 鼎鼎鼎 鼎鼎 鼎鼎鼎 鼎鼎
// 鼎鼎鼎 鼎鼎 鼎鼎鼎 鼎鼎
// 鼎鼎鼎 鼎鼎 鼎鼎鼎 鼎鼎
// 鼎鼎鼎 鼎鼎 鼎鼎鼎 鼎鼎
// 鼎鼎鼎 鼎鼎 鼎鼎鼎 鼎鼎
// 鼎鼎鼎 鼎鼎鼎 鼎鼎鼎
// 鼎鼎鼎 鼎鼎鼎 鼎鼎鼎
// 鼎鼎鼎 鼎鼎鼎 鼎鼎鼎
// 鼎鼎鼎 鼎鼎鼎 鼎鼎鼎
// 鼎鼎鼎 鼎鼎鼎 鼎鼎鼎
// 鼎 鼎鼎鼎 鼎鼎鼎 鼎鼎鼎
// 鼎鼎鼎鼎鼎鼎 鼎鼎鼎 鼎鼎鼎
// 鼎鼎鼎鼎鼎 鼎鼎鼎 鼎鼎鼎
// 鼎鼎鼎鼎 鼎鼎鼎 鼎鼎鼎
// `,
// `Local: https://192.168.31.193:${port}`,
// `Network: http://${require('ip').address()}:${port}`,
// ],
/**
*
* ┌───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┐
* │Esc│ │ F1│ F2│ F3│ F4│ │ F5│ F6│ F7│ F8│ │ F9│F10│F11│F12│ │P/S│S L│P/B│ ┌┐ ┌┐ ┌┐
* └───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┘ └┘ └┘ └┘
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ ┌───┬───┬───┐ ┌───┬───┬───┬───┐
* │~ `│! 1│@ 2│# 3│$ 4│% 5│^ 6│& 7│* 8│( 9│) 0│_ -│+ =│ BacSp │ │Ins│Hom│PUp│ │N L│ / │ * │ - │
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ├───┼───┼───┤ ├───┼───┼───┼───┤
* │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │{ [│} ]│ | \ │ │Del│End│PDn│ │ 7 │ 8 │ 9 │ │
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ └───┴───┴───┘ ├───┼───┼───┤ + │
* │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │: ;│" '│ Enter │ │ 4 │ 5 │ 6 │ │
* ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤ ┌───┐ ├───┼───┼───┼───┤
* │ Shift │ Z │ X │ C │ V │ B │ N │ M │< ,│> .│? /│ Shift │ │ ↑ │ │ 1 │ 2 │ 3 │ │
* ├─────┬──┴─┬─┴──┬┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ ┌───┼───┼───┐ ├───┴───┼───┤ E││
* │ Ctrl│ │Alt │ Space │ Alt│ │ │Ctrl│ │ ← │ ↓ │ → │ │ 0 │ . │←─┘│
* └─────┴────┴────┴───────────────────────┴────┴────┴────┴────┘ └───┴───┴───┘ └───────┴───┴───┘
*/
messages: [
`
~~~~~~~~~~~~~~~~#######~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~#########~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~############~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~#############~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~##~~###########~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~###~~######~#####~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~###~#######~~~####~~~~~~~~~~~~~~~~~
~~~~~~~~~~~###~~##########~####~~~~~~~~~~~~~~~~
~~~~~~~~~~####~~###########~####~~~~~~~~~~~~~~~
~~~~~~~~#####~~~###########~~#####~~~~~~~~~~~~~
~~~~~~~######~~~###~########~~~#####~~~~~~~~~~~
~~~~~~~#####~~~###~~~########~~~######~~~~~~~~~
~~~~~~######~~~###~~###########~~~######~~~~~~~
~~~~~######~~~####~##############~~######~~~~~~
~~~~#######~~#####################~#######~~~~~
~~~~#######~~##############################~~~~
~~~#######~~######~#################~#######~~~
~~~#######~~######~######~#########~~~######~~~
~~~#######~~~~##~~######~~~######~~~~~######~~~
~~~#######~~~~~~~~######~~~~#####~~~~~#####~~~~
~~~~######~~~~~~~~#####~~~~~#####~~~~~####~~~~~
~~~~~#####~~~~~~~~####~~~~~~####~~~~~###~~~~~~
~~~~~~#####~~~~~~;###~~~~~~~####~~~~~#~~~~~~~~
~~~~~~~~##~~~~~~~####~~~~~~~####~~~~~~~~~~~~~
~~~~~~~~~#~~~~~~~####~~~~~~~####~~~~~~~~~~~~~
`,
`Local: http://192.168.31.35:${port}`,
`Network: http://${require('ip').address()}:${port}`,
],
// messages: [
// `
// MMMMM
// MMMMMM
// MMMMMMM
// MMMMMMMM .
// MMMMMMMMM
// HMMMMMMMMMM
// MMMMMMMMMMMM M
// MMMMMMMMMMMMM M
// MMMMMMMMMMMMM M
// MMMMMMMMMMMMM:
// oMMMMMMMMMMMMMM
// .MMMMMMMMMMMMMMo MMMMMMMMMMMMMMM M
// MMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMM
// MMMMMMMMMMMMMMMMMMMMMMMMMMMM. oMMMMMMMMMMMMMMM.M
// MMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMM
// MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
// oMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
// MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
// MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM: H
// MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM . MMM
// MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM M MMMMMM
// .MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM M MMMMMMMMMM
// MM. MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM M MMMMMMMMMMMM
// MM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM .MMMMMMMMMMMMMM
// MM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
// MM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
// .MMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMM.MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
// HMMMMMMMMMMMMMMMMMMMMM.MMMMMMMMM.MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
// MMMMMMMMMMMMMMM MMM.oMMMMMMM..MMMMMMMMM:MMMMMMMMMMMMMMMMMMMMMMM
// MMMMMMMMMMMMMM MM..MMMMMMM...MMMMMMM. MMMMMMMMMMMMMMMMMMMMM
// MMMMMMMMMMMMMMM ..MMMMMM...MMMMMM ..MMMMMMMMMMMMMMMMMMM
// MMMMMMM:M.MMM.M.. MMMMM M..MMMMM...MMMMMMMMMMMMMMMMMM MMM
// MMMM. .M..MM.M...MMMMMM..MMMMM.. MMMMMMMMMMMMMMMMMMMMMMMMMMMMMM .
// MMMM..M....M.....:MMM .MMMMMM..MMMMMMM...MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
// MMM.M.. ...M......MM.MMMMM.......MHM.M .MMMMMMMMMMMMMMMMMMMMMMMMM
// MMMMMMMM..MM. . MMM.....MMMMMM.M.....M ..MM..M MMMMMMMMMMMMMMMMMMM
// .MMMMMHMM. ..MMMM. MMM............o..... . .MMMMMMMMMMMMMMM
// MMM. M... .........................M..:.MMMMMMMMMMMM
// oMMM............ .................M.M.MMMMMMMMM
// .....MM........................ . MMMMMM
// M.....M.....................o.MM.MMMMMMMM.
// M........................M.. ...MMMMMMMMMMMMMo
// :....MMM..............MMM..oMMMMMMM
// M...MMM.............MMMMMMM
// .............:MMMMMMMM
// M..... MMM.....M
// M M.............
// ................M
// ooM.................MM MoMMMMMoooM
// MMoooM......................MoooooooH..oMM
// MHooooMoM.....................MMooooooM........M
// oooooooMoooM......... o........MoooooooM............
// Mooooooooooo.......M.........Moooooooo:..............M
// MooMoooooooooM...M........:Mooooooooooo:..............M
// M..oooooooooooo .........Mooooooooooooooo..............M
// M...Mooo:oooooooo.M....ooooooooooooooooooo..M...........M
// ...oooooMoooooooM..Mooooooooooooo:oooooooM.M...........M.
// M...ooooooMoo:ooooMoooooooooooooHoooooooooH:M. ...........:
// M..MoooooooMoooooooooooooooooo:ooooooMooooMoM..............M
// M..ooooooooooMooooooooooooooHoooooooMooHooooM...............M
// ...ooooooooooooooooooo:MooooooooooooooMoMoooM................
// M...oooooooooooooooooooooooooooooooooooooMooMM................M
// ...MooooooooooooooooooooooooooooooooooooooooMo ................
// ...MooooooooooooooooooooooooooooooooooooooooM M................M
// M...ooooooooooooooooooooooooooooooooooooooooM ................M
// ...MoooooooooooooooooooooooooooooooooooooooMM .:...............
// .....MooooooooooooooooooooooooooooooooooooMoo .............M
// M...... ooooooooooooooooooooooooooooooooooooM M..............M
// M........MooooMMM MM MM MMMMMMMMMooooooooM M...............M
// .........HM M: MM :MMMMMM M M...............
// M..........M M MoM M M................M
// M.........:M MoH M M M MooooHoooMM. M M...............M
// M..........Moooo MMooM oooooMooooooooM M..............H
// M.........MooooM Mooo : ooooooMooooMoooM M........ . .o.M
// H.. .....ooooo oooo M MooooooooooooooM M... MMMMMMMMMMM
// MMMMMMMMMMooooM M oooo . ooooooMooooooooM .MMMMMMMMMMMMMMM
// MMMMMMMMMMooooH : ooooH oooooooooooooooo MMMMMMMMMMMMMMM
// MMMMMMMMMMoooo ooooM Moooooooooooooooo .MMMMMMMMMMMMMMM
// MMMMMMMMMMoooo ooooM MooooooooooooooooM MMMMMMMMMMMMMMM
// MMMMMMMMMMoooM ooooM ooooooooooooooooo MMMMMMMMMMM:M
// MMMMMMMMMMoooM MooooM oooooooooooMoooooo MH...........
// . ......Mooo. MooooM oooooooooooooooooo M............M
// M.M......oooo MooooM Moooooooooooooooooo: .........M.....
// M.M.....Moooo MooooM ooooooooooooooooooM .M............
// .......MooooH MooooM oooooooooMoooooooooo M..o...M..o....M
// .o....HMooooM MooooH MooooooooMooooooooooM .:M...M.......M
// M..M.....MoooM :oooo: .MooooooooHooMoooooooooM M M... ..oM.M
// M...M.:.Mooo. MMMMooooo oooooooooooMoooooooooooooM ....M. M
// M:M..o.Moooooooooooooo MooooooooooooooMooooooooooooM .Mo
// MooooooooooooooMooooooooooooMoMoooooooooooooo
// Mooooooooooooooo:ooooooooooooooooooooooooooooo
// ooooooooooooooooMooooooooooMoooooooooooooooooo
// ooooooooooooooooMoooooooooooMooooooooooooooooHo
// ooMooooooooooooooMoooooooooooooooooooooooooooMoM
// MooMoooooooooooooo.ooooooooooooooooooooooooooo:oM
// MoooooooooooooooooooooooooooooooooooooooooooooooM
// MoooMooooooooooooooMooooooooooooooooooooooooooooo.
// MoooMooooooooooooooMoooooooooooooooooooooooooMooooM
// MooooooooooooooooooMoooooooooooooooooooooooooMoooooM
// MooooMoooooooooooooMoooooooooooooooooooooooooMoHooooM
// ooooooMooooooooooooooooooooooooooooooooooooooooMoMoooM
// MooooooooooooooooooooMooooooooooooooooooooooooooMoooooH:
// MoooooooMooooooooooooMoooooooooooooooooooooooooooooHoooM
// MooooooooMoooooooooooMoooooooooooooooooooooooooMoooMooooM
// Moooooooooooooooooooooooooooooooooooooooooooooo.oooMooooo
// MoooooooooooooooooooooooooooooooooooooooooooooMoooooooooM
// MooooooooooooooooooooMoooooooooooooooooooooooooooooooooM
// MooooooooooooooooooooMHooooooooooooooooooooMoooo:ooooo
// MMooooooooooooooooooMoMHoooooooooooooooooooooooMooooo
// MMoooooooooooooooMMooo MMooooooooooooooooooooooooooM
// MMMoooooooooooooMooooo oooooooooooooooooooooMooooo
// MooMMoooooooooMoooMMoM ooooHooooooooooooooooMooooM
// MooooMooooooMooooMoooM MoooooMoooooooooooooMooooo
// ooooooMMooooooooMooooM MoooooooooMooooooooooooooM
// HooooooMoooooooMooooM HoooooooHooMooooooooooooo
// oooMoooooooooHoooM MoooooooooMoooooooooM
// HooooooooooooHM MooooooooMMoooooooM
// MMMMMMMMMMMMMM Moooooo:MooooHMM
// MMMMMMM: ... MMMMMMMMMMMMMM
// M............M MMMMMMMMM ....
// M.MM.......... M.............M
// M ..............MM M..............
// MMMMM............MMMM ..MMMMMMMM ....M
// MMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMM...M
// .MMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMM
// MMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMM
// :MMMMMMMMMMMMMMMMMMH MMMMMMMMMMMMMMMMMMM
// By EBEN Jérôme MMMMMMMMMMMMMMMMMM
// MMMMMMMMMMMMMMM
// HMMMMMMMMee
// `,
// `Local: https://192.168.31.193:${port}`,
// `Network: http://${require('ip').address()}:${port}`,
// ],
},
onErrors: config.dev.notifyOnErrors ?
utils.createNotifierCallback() :
undefined
}))
resolve(devWebpackConfig)
}
})
})