Pour tout problème contactez-nous par mail : support@froggit.fr | La FAQ :grey_question: | Rejoignez-nous sur le Chat :speech_balloon:

Skip to content
Snippets Groups Projects
webpack.dev.conf.js 2.84 KiB
Newer Older
  • Learn to ignore specific revisions
  • Gray Fawkes's avatar
    0.1
    Gray Fawkes committed
    'use strict'
    
    GrayFawkes's avatar
    GrayFawkes committed
    const path = require('path')
    
    Gray Fawkes's avatar
    0.1
    Gray Fawkes committed
    const utils = require('./utils')
    const webpack = require('webpack')
    const config = require('../config')
    const merge = require('webpack-merge')
    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')
    
    GrayFawkes's avatar
    GrayFawkes committed
    const { VueLoaderPlugin } = require('vue-loader')
    
    Gray Fawkes's avatar
    0.1
    Gray Fawkes committed
    
    const HOST = process.env.HOST
    const PORT = process.env.PORT && Number(process.env.PORT)
    
    const devWebpackConfig = merge(baseWebpackConfig, {
    
    GrayFawkes's avatar
    GrayFawkes committed
    	module: {
    		rules: utils.styleLoaders({ sourceMap: config.dev.cssSourceMap, usePostCSS: true })
    	},
    	// cheap-module-eval-source-map is faster for development
    	devtool: config.dev.devtool,
    
    Gray Fawkes's avatar
    0.1
    Gray Fawkes committed
    
    
    GrayFawkes's avatar
    GrayFawkes committed
    	// 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') },
    			],
    		},
    		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: ['.*']
    			}
    		]),
    		new VueLoaderPlugin()
    	]
    
    Gray Fawkes's avatar
    0.1
    Gray Fawkes committed
    })
    
    module.exports = new Promise((resolve, reject) => {
    
    GrayFawkes's avatar
    GrayFawkes committed
    	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
    
    Gray Fawkes's avatar
    0.1
    Gray Fawkes committed
    
    
    GrayFawkes's avatar
    GrayFawkes committed
    			// Add FriendlyErrorsPlugin
    			devWebpackConfig.plugins.push(new FriendlyErrorsPlugin({
    				compilationSuccessInfo: {
    					messages: [`Your application is running here: http://${devWebpackConfig.devServer.host}:${port}`],
    				},
    				onErrors: config.dev.notifyOnErrors
    				? utils.createNotifierCallback()
    				: undefined
    			}))
    
    Gray Fawkes's avatar
    0.1
    Gray Fawkes committed
    
    
    GrayFawkes's avatar
    GrayFawkes committed
    			resolve(devWebpackConfig)
    		}
    	})
    
    Gray Fawkes's avatar
    0.1
    Gray Fawkes committed
    })