zoukankan      html  css  js  c++  java
  • build 文件夹中的 webpack.dev.conf.js

      1 //此文件是开发环境下webpack相关配置
      2 'use strict'
      3 const utils = require('./utils')
      4 const webpack = require('webpack')
      5 const config = require('../config')
      6 const merge = require('webpack-merge') //导入webpackage-merge 用来合并对象 去掉重复的属性
      7 const path = require('path')
      8 const baseWebpackConfig = require('./webpack.base.conf')
      9 const CopyWebpackPlugin = require('copy-webpack-plugin') //导入copy-webpack-plugin 用来复制
     10 const HtmlWebpackPlugin = require('html-webpack-plugin') //导入html-webpack-plugin 用来自动生成html
     11 const FriendlyErrorsPlugin = require('friendly-errors-webpack-plugin') //导入friendily-errors-webpack-plugin 用来收集和展示错误日志
     12 const portfinder = require('portfinder') //导入portfinder 用来获取port
     13 
     14 // 主机
     15 const HOST = process.env.HOST
     16 
     17 // 端口
     18 const PORT = process.env.PORT && Number(process.env.PORT)
     19 
     20 // 合并
     21 const devWebpackConfig = merge(baseWebpackConfig, {
     22   mode: 'development',
     23   module: {
     24 
     25     //解析样式文件的规则 
     26     rules: utils.styleLoaders({
     27       sourceMap: config.dev.cssSourceMap,
     28       usePostCSS: true
     29     })
     30   },
     31 
     32   // cheap-module-eval-source-map is faster for development
     33   // 开发工具 用来调试
     34   devtool: config.dev.devtool,
     35 
     36 
     37   // 服务器 如需要请求本地数据时  需要在此块添加其他配置
     38   // 这些 devServer 选项应该在 /config/index.js 中定制
     39   devServer: {
     40 
     41     //重新加载server,控制台以warning方式提示错误
     42     clientLogLevel: 'warning',
     43 
     44 
     45     //HTML5 history api时,任意的404可能需要被替代为index.html
     46     historyApiFallback: {
     47       rewrites: [{
     48         from: /.*/,
     49         to: path.posix.join(config.dev.assetsPublicPath, 'index.html')
     50       }, ],
     51     },
     52     hot: true, //启用热替换
     53 
     54     contentBase: false, // 告诉服务器从哪里提供内容,只有在你想要提供静态文件时才需要,这里是禁用 ( since we use CopyWebpackPlugin. )
     55 
     56     compress: true, //是否压缩
     57     host: HOST || config.dev.host, //主机
     58     port: PORT || config.dev.port, //端口
     59     open: config.dev.autoOpenBrowser, //是否自动打开浏览器
     60 
     61     // 编译出错时是否有提示
     62     overlay: config.dev.errorOverlay ? {
     63       warnings: false,
     64       errors: true
     65     } : false,
     66 
     67     publicPath: config.dev.assetsPublicPath, //静态资源路径 此路径可在浏览器中打开
     68     proxy: config.dev.proxyTable, //代理
     69     quiet: true, // 启用quiet 意思是除了启动信息以外的任何信息都不会打印在控制台 (necessary for FriendlyErrorsPlugin)
     70 
     71     // 监视文件的选项
     72     watchOptions: {
     73       poll: config.dev.poll,
     74     }
     75   },
     76   plugins: [
     77     // 自定义一个plugin 生成当前环境的一个变量
     78     new webpack.DefinePlugin({
     79       'process.env': require('../config/dev.env')
     80     }),
     81     new webpack.HotModuleReplacementPlugin(), //模块热替换插件 修改模块时不需要刷新页面
     82 
     83     // https://github.com/ampedandwired/html-webpack-plugin
     84     // 这是一个webpack插件,可以简化HTML文件的创建,从而为您的webpack bundle提供服务。这对于webpack bundle特别有用,因为它在文件名中包含一个哈希值,这会改变每次编译。你可以让插件为你生成一个HTML文件,使用lodash模板提供你自己的模板,或者使用你自己的加载器。
     85     new HtmlWebpackPlugin({
     86       filename: 'index.html',
     87       template: 'index.html',
     88       favicon: path.resolve(__dirname, '../static/images/favicon.ico'),
     89       inject: true,
     90       dll: (function () {
     91         let max = 2
     92         let res = []
     93         for (let i = 0; i < max; i++) {
     94           const dllName = require(path.resolve(__dirname, `../dllManifest/xuAdmin${i}-manifest.json`)).name.split('_')
     95           res.push(`/static/dll/${dllName[0]}.${dllName[1]}.dll.js`)
     96         }
     97         return res
     98       })()
     99     }),
    100     // 复制静态资源到开发环境的路径
    101     new CopyWebpackPlugin([{
    102       from: path.resolve(__dirname, '../static'),
    103       to: config.dev.assetsSubDirectory,
    104       ignore: ['.*']
    105     }])
    106   ]
    107 })
    108 
    109 // 导出
    110 module.exports = new Promise((resolve, reject) => {
    111   // 获取basePort
    112   portfinder.basePort = process.env.PORT || config.dev.port
    113   // 端口配置
    114   portfinder.getPort((err, port) => {
    115     if (err) {
    116       reject(err)
    117     } else {
    118       process.env.PORT = port // 发布 e2e 测试所需的新端口
    119       devWebpackConfig.devServer.port = port // 添加端口到 devServer 配置
    120 
    121       // 添加友好提示(Add FriendlyErrorsPlugin)
    122       devWebpackConfig.plugins.push(new FriendlyErrorsPlugin({
    123         // 编译成功提示
    124         compilationSuccessInfo: {
    125           // 提示运行的组机和端口
    126           messages: [`Your application is running here: http://${devWebpackConfig.devServer.host}:${port}`],
    127           // 备注
    128           notes: [`   _     _       _     _       _     _        _     _      _     _     
    129                      (c).-.(c)     (c).-.(c)     (c).-.(c)     (c).-.(c)     (c).-.(c)    
    130                       / ._. \      / ._. \      / ._. \      / ._. \      / ._. \   
    131                    __\( Z )/__  __\( Y )/__  __\( J )/__  __\( B )/__  __\( X )/__  
    132                    (_.-/'-'\-._)(_.-/'-'\-._)(_.-/'-'\-._)(_.-/'-'\-._)(_.-/'-'\-._)
    133                      || L ||       || O ||        || V ||        || E ||       || . ||      
    134                  _.' \`-' '._  _.' \`-' '._  _.' \`-' '._  _.' \`-' '._  _.' \`-' '._  _.' 
    135                 (.-./\`-'\.-.)(.-./\`-'\.-.)(.-./\`-'\.-.)(.-./\`-'\.-.)(.-./\`-'\.-.)
    136                 \`-'     \`-'  \`-'     \`-'  \`-'     \`-'  \`-'     \`-'  \`-'     \`-'  `]
    137         },
    138         // 错误提示
    139         onErrors: config.dev.notifyOnErrors ?
    140           utils.createNotifierCallback() : undefined
    141       }))
    142 
    143       resolve(devWebpackConfig)
    144     }
    145   })
    146 })
  • 相关阅读:
    Aizu:0189-Convenient Location
    POJ:3262-Protecting the Flowers
    POJ:1862-Stripies
    POJ:3040-Allowance(贪心好题)
    模态
    实时错误 '91' :对象变量或with块变量未设置
    archlinux的安装与简单配置(长期更新)
    [置顶] css 背景透明,文字不透明,alpha滤镜,opacity,position:relative;
    交叉编译:cannot find /lib/libc.so.6 collect2: ld returned 1 exit status
    hdu 2460 poj 3694 (双联通+LCA)
  • 原文地址:https://www.cnblogs.com/zhuyujie/p/14074638.html
Copyright © 2011-2022 走看看