webpack4简单入门实例

针对“webpack4简单入门实例”的完整攻略,我会分为以下几个部分进行详细讲解:

1.什么是webpack
2.环境准备
3.webpack配置入门
4.样式加载及ES6转码入门
5.多页应用Webpack处理
6.插件及打包输出调整
7.示例说明
8.总结

一、什么是webpack

Webpack是一个模块打包器,通过分析模块之间的依赖关系,将所有模块打包成一个或多个文件。Webpack4主要包含四个核心概念:Entry、Output、Loader和Plugin。

Entry:指示Webpack应该从哪个模块开始创建依赖图。在webpack4中可以省略该属性,因为默认入口为./src/index.js。

Output:指定Webpack编译后打包的文件存放的位置、文件名等参数。

Loader:实现对不同类型的文件如何在Webpack编译过程中进行预处理。

Plugin:为Webpack扩展功能,如优化、压缩等。

二、环境准备

1.确保安装了Node.js,可以在命令行中输入npm -v 和node -v查看版本号。

npm -v
node -v

2.在本地新建一个项目目录,执行命令 cd 项目目录。

3.执行命令 npm init 初始化项目,生成package.json文件。

4.安装Webpack4和webpack-cli:npm install webpack webpack-cli -D。-D表示安装至devDependencies开发环境中。

5.准备工程文件夹结构,参考如下:

|-- src
|   |-- index.js // 入口JS文件
|   |-- style.css // 样式表
|   |-- assets // 静态资源
|-- dist // 打包后文件
|-- node_modules // 安装的依赖包
|-- package.json // Node.js 项目配置文件
|-- webpack.config.js // Webpack配置文件
|-- .gitignore // Git 版本控制忽略文件配置

三、webpack配置入门

1.在项目根目录下创建webpack.config.js文件:

const path = require('path') // 引入node中的path模块

module.exports = {
  entry: './src/index.js', // 默认是 './src/index.js'
  output: {
    filename: 'bundle.js',
    path: path.resolve(__dirname, 'dist')
  }
}

2.在package.json文件中添加以下命令:

  "scripts": {
    "build": "webpack --config webpack.config.js"
  }

3.执行命令npm run build即可执行打包操作。

四、样式加载及ES6转码入门

1.安装相关的loader:

npm install style-loader css-loader postcss-loader autoprefixer babel-loader @babel/core @babel/preset-env -D

2.在webpack.config.js文件中添加以下配置:

const autoprefixer = require('autoprefixer') // 前缀
const path = require('path')

module.exports = {
  entry: './src/index.js', // 默认是 './src/index.js'
  output: {
    filename: 'bundle.js',
    path: path.resolve(__dirname, 'dist')
  },
  module: {
    rules: [
      {
        test: /\.css$/,
        use: ['style-loader', 'css-loader', 'postcss-loader'],
      },
      {
        test: /\.js$/,
        exclude: /(node_modules)/,
        use: ['babel-loader'],
      },
    ]
  },
  plugins: [
    new webpack.LoaderOptionsPlugin({
      options: {
        postcss: [autoprefixer()]
      }
    })
  ]
}

五、多页应用Webpack处理

1.新增index.html和about.html文件

2.新增index.js和about.js文件

3.webpack.config.js文件中添加以下配置:

module.exports = {
  entry: {
    // 分别打包index.js和about.js
    index: './src/index.js',
    about: './src/about.js'
  },
  output: {
    filename: '[name].bundle.js',
    path: path.resolve(__dirname, 'dist')
  },
  plugins: [
    new HtmlWebpackPlugin({
      filename: 'index.html',
      template: './src/index.html'
    }),
    new HtmlWebpackPlugin({
      filename: 'about.html',
      template: './src/about.html'
    })
  ]
}

六、插件及打包输出调整

1.安装相关的插件:

npm install css-minimizer-webpack-plugin terser-webpack-plugin html-webpack-plugin -D

2.在webpack.config.js文件中添加以下配置:

const CssMinimizerPlugin = require('css-minimizer-webpack-plugin') // 压缩css
const TerserPlugin = require('terser-webpack-plugin') // 压缩js
const HtmlWebpackPlugin = require('html-webpack-plugin') // html plugin
const autoprefixer = require('autoprefixer') // 前缀
const path = require('path')
const webpack = require('webpack')

module.exports = {
  entry: {
    // 分别打包index.js和about.js
    index: './src/index.js',
    about: './src/about.js'
  },
  output: {
    filename: '[name].[contenthash:8].bundle.js', // 将文件hash化,解决文件缓存问题
    path: path.resolve(__dirname, 'dist')
  },
  module: {
    rules: [
      {
        test: /\.css$/,
        use: ['style-loader', 'css-loader', 'postcss-loader'],
      },
      {
        test: /\.js$/,
        exclude: /(node_modules)/,
        use: ['babel-loader'],
      },
    ]
  },
  plugins: [
    new HtmlWebpackPlugin({
      filename: 'index.html',
      template: './src/index.html',
      chunks: ['index']
    }),
    new HtmlWebpackPlugin({
      filename: 'about.html',
      template: './src/about.html',
      chunks: ['about']
    }),
    new webpack.LoaderOptionsPlugin({
      options: {
        postcss: [autoprefixer()]
      }
    })
  ],
  optimization: {
    minimize: true,
    minimizer: [
      new CssMinimizerPlugin(),
      new TerserPlugin({
        extractComments: false,
        terserOptions: {
          output: {
            comments: false,
          },
        },
      }),
    ],
    runtimeChunk: {
      name: 'runtime',
    },
  },
}

七、示例说明

1.编写index.js文件:

import './style.css'
console.log('Hello World!')

2.编写style.css文件:

h1 {
  display: flex;
  justify-content: center;
}

3.编写index.html文件:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Webpack4 简单入门实例</title>
</head>
<body>
  <h1>Hello World!</h1>
  <script src="./index.bundle.js"></script>
</body>
</html>

4.编译:npm run build

5.在浏览器中打开index.html,可以看到“Hello World!”文字居中显示。

八、总结

以上就是对于“Webpack4简单入门实例”的详细讲解,内容涵盖了Webpack的核心概念、环境准备、webpack配置入门、样式加载及ES6转码入门、多页应用Webpack处理和插件及打包输出调整等方面。需要注意的是,Webpack的使用也是有一定门槛的,需要多加尝试和实践,才能真正掌握Webpack的使用技巧。

阅读剩余 81%

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:webpack4简单入门实例 - Python技术站

(0)
上一篇 2023年6月9日
下一篇 2023年6月9日

相关文章

  • html+css实现血轮眼轮回眼特效代码

    下面是实现血轮眼轮回眼特效代码的攻略: 1. 准备工作 在开始编写代码之前,需要准备以下内容: 血轮眼轮回眼的图像素材 HTML文档框架 CSS样式表 2. HTML文档框架 为了实现血轮眼轮回眼的特效,我们将HTML文档分成3层。其中,第一层为血轮眼的底部,第二层为轮回眼的中间部分,第三层为轮回眼的顶部。HTML文档框架的代码如下: <div cla…

    css 2023年6月10日
    00
  • css图标制作教程制作云图标

    下面我会详细讲解如何制作云图标的完整攻略,包含以下几个步骤: 1. 准备工作 在制作过程中,我们需要准备两个东西,一是云的SVG图标文件,二是实现动画效果的CSS代码: (1)SVG图标文件: 首先需要使用Adobe Illustrator或其他矢量图形编辑软件,设计并导出一个云的SVG图标文件,示例如下: <svg width="24px&…

    css 2023年6月10日
    00
  • 使用CSS实现三栏自适应布局(两边宽度固定,中间自适应)

    下面是使用CSS实现三栏自适应布局(两边宽度固定,中间自适应)的详细攻略: 一、HTML结构 首先我们需要创建一个基本的HTML结构,它包含一个顶部导航栏、一个中间容器和两侧的固定宽度容器。使用<header>、<main>和<aside>标签来分别表示导航、中间容器和两侧容器。 <body> <head…

    css 2023年6月9日
    00
  • 任意图片实现垂直居中的三种方法(兼容性还不错)

    我们来详细讲解一下“任意图片实现垂直居中的三种方法(兼容性还不错)”的完整攻略。 标题 介绍 本文将介绍三种方法,在任意情况下实现图片的垂直居中。简单易懂,兼容性还不错,适用于大多数浏览器。 方法一:Flexbox布局 Flexbox布局是一种可以轻松实现垂直居中的布局方法,适用于大多数现代浏览器。下面是代码示例: .container { display:…

    css 2023年6月10日
    00
  • CSS3实现伪类hover离开时平滑过渡效果示例

    针对“CSS3实现伪类hover离开时平滑过渡效果示例”的完整攻略,我将详细讲解以下内容: 1. 理解CSS3中的过渡效果(Transition) CSS3中的过渡效果,指的是当某个CSS属性(如width、height、opacity等)的值发生改变时,可以通过添加过渡效果,来实现平滑的过渡效果。具体而言: 首先,需要在CSS样式中通过transition…

    css 2023年6月10日
    00
  • jQuery实现锁定页面元素(表格列)

    下面是“jQuery实现锁定页面元素(表格列)”的完整攻略: 什么是锁定元素(表格列) 锁定元素(表格列)是指在滚动页面时,某些元素(比如表格的列)位置固定不变,不受页面滚动影响。 实现锁定元素(表格列)的方法 实现锁定元素(表格列)的方法有很多种,下面分别介绍两种实现方式。 方式一:使用CSS实现 通过设置表格头部的CSS属性:position: fixe…

    css 2023年6月10日
    00
  • 边框(border)边距(margin)和间隙(padding)属性的区别

    下面是关于边框、边距和间隙属性的完整攻略。 1. 边框(border) 边框是指围绕在HTML元素周围的线条或规定形状。它可以使用CSS属性border进行设置,其中包括属性border-width(设置边框宽度)、属性border-style(设置边框样式)和属性border-color(设置边框颜色)。边框可以用于装饰、区分或强调HTML元素。 下面是一…

    css 2023年6月9日
    00
  • CSS入门教程:计算CSS盒模型宽和高

    CSS盒模型是网页布局的基础,了解盒模型的计算方法有助于我们更好的控制布局。接下来,我将详细讲解“CSS入门教程:计算CSS盒模型宽和高”的攻略,以帮助大家更好地理解和掌握盒模型的计算方法。 计算盒模型的宽和高 当我们设置一个元素的宽度和高度时,我们实际上是设置的是盒模型的大小。盒模型由四个部分组成:内容区域、内边框、外边框和内边距。在计算盒模型的宽高时,我…

    css 2023年6月9日
    00
合作推广
合作推广
分享本页
返回顶部