2、webpack添加web服务、html-webpack-plugin插件

webpack基础环境搭建

接着基础环境工程继续添加:

  • 1、在项目根目录创建:index.html
  • 2、添加web服务
    • 2-1 添加web服务是为了dev调试方便,启动一个静态服务,执行命令:
        yarn add webpack-dev-server -D
      
    • 2-2、在package.json中配置dev模式
        "scripts": {
          "build": "webpack --config webpack.config.js",
          "dev": "webpack-dev-server"
        },
      
    • 2-3、在webpack.config.js中添加webpack-dev-server
      // 开发服务的配置
      devServer: {
        // 端口,默认8080
        port: '8099',
        // 进度条
        progress: true,
        // 启动后访问目录,默认是项目根目录,这个设置到打包后目录
        contentBase: './build',
        // 启动压缩
        compress: true
      },
      
  • 3、html-webpack-plugin插件
    • 3-1、执行命令
        yarn add html-webpack-plugin -D
      
    -3-2、在webpack.config.js中添加插件配置
      // html-webpack-plugins 插件
      let HtmlWebpackPlugins = require('html-webpack-plugin');
      ...
      // 插件配置
      plugins: [
        new HtmlWebpackPlugins({
            // 模板位置
            template: 'index.html',
            // 文件名
            filename: 'index.html',
            // 生产开启,压缩代码
            minify: {
                // 删除html双引号
                removeAttributeQuotes: true,
                // 压缩成一行
                collapseWhitespace: true
            },
            // 文件哈希
            hash: true
        })
      ]
      ...
    
  • 4、webpack.config.js 完整配置
//  webpack是node写出来的, 需要node的写法
let path = require('path');
// path.resolve 相对路径转成绝对路径
// console.log(path.resolve('dist'));
// 以当前目录
// console.log(__dirname);

// html-webpack-plugins 插件
let HtmlWebpackPlugins = require('html-webpack-plugin');

// webpack相关配置
module.exports = {
    // 开发服务的配置
    devServer: {
        // 端口,默认8080
        port: '8099',
        // 进度条
        progress: true,
        // 启动后访问目录,默认是项目根目录,这个设置到打包后目录
        contentBase: './build',
        // 启动压缩
        compress: true
    },
    // 模式,2种:生产模式(production)和开发模式(development)
    // 开发模式不压缩打包后代码,生产模式压缩打包后代码
    mode: 'development',
    // 入口,表示从哪里开始打包
    entry: './src/index.js',   
    // 表示出口(输出后文件相关配置)
    output: {   
        // 打包后的文件名,产生哈希
        //filename: 'bundle.[hash].js',  
        // 哈希8位
        filename: 'bundle.[hash:8].js',  
        // 输出后的路径(必须是一个绝对路径)
        path: path.resolve(__dirname, 'dist')
    },
    // 插件配置
    plugins: [
        new HtmlWebpackPlugins({
            // 模板位置
            template: 'index.html',
            // 文件名
            filename: 'index.html',
            // 生产开启,压缩代码
            minify: {
                // 删除html双引号
                removeAttributeQuotes: true,
                // 压缩成一行
                collapseWhitespace: true
            },
            // 文件哈希
            hash: true
        })
    ]
}
  • 5、index.html模板
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>index</title>
</head>
<body>
    
</body>
</html>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 写在开头 先说说为什么要写这篇文章, 最初的原因是组里的小朋友们看了webpack文档后, 表情都是这样的: (摘...
    Lefter阅读 5,452评论 4 31
  • 全局安装webpack 全局安装webpack会有个问题,就是当你有两个项目依赖于不同版本的webpack,就会有...
    説好的妹紙呢阅读 1,964评论 0 11
  • 在现在的前端开发中,前后端分离、模块化开发、版本控制、文件合并与压缩、mock数据等等一些原本后端的思想开始...
    Charlot阅读 5,690评论 1 32
  • 建立明朝 在战胜了陈友谅以后,朱元璋的对手已寥寥无几,站在他面前的只有张士诚,元朝了。 一 张士诚在起义之初还是个...
    夜枕寒流阅读 340评论 0 0
  • 看销售圣经,收获很大。跟着里面的内容去探索自己,就有了标题。 我想成为一名优秀的财务人员。 你现在是吗? 不是。 ...
    一个人的变化阅读 309评论 0 0

友情链接更多精彩内容