美文网首页
玩转webpack 初识webpack

玩转webpack 初识webpack

作者: fallfilm | 来源:发表于2019-11-07 18:20 被阅读0次

为什么需要构建工具?

浏览器的支持情况尚不统一

使用构建工具可以帮助我们

1.转换ES6语法
2.转换JSX
3.css前缀补全/预处理器
4.压缩混淆
5.代码、图片、文字等资源压缩

走进webpack

搭建环境

1.安装 npm
2.安装 webpackwebpack-cli

npm install webpack webpack-cli --save-dev

3.创建空目录
4.创建package.json

npm init -y

开始第一个webpack项目

webpack 默认配置文件:webpack.config.js

可以通过 webpack --config 指定配置⽂件

webpack 构建启动命令

// package.json
{
  "scripts": {
    "build": "webpack" 
  },
}

scripts 脚本中定义了 "build": "webpack" ,启动命令为 build

npm run build

看个栗子

// webpack.config.js
module.exports = {
    entry: './src/index.js',  //  ⼊⼝
    output: {
        path: path.join(__dirname, 'dist'),
        filename: '[name].js'
    }, // 出口
    mode: 'production',   // 环境
    module: {
        rules: [{   //  loader
            test: /\.txt$/,
            use: 'raw-loader'
        }]
    },
    plugins: [       //  插件
        new HtmlwebpackPlugin({
            template: './src/index.html'
        })
    ]
};

entry,output,mode,loader,pluginswebpack 核心概念

入口【entry】

入口起点(entry point)指示 webpack 应该使用哪个模块,来作为构建其内部依赖图的开始。进入入口起点后,webpack 会找出有哪些模块和库是入口起点(直接和间接)依赖的。
每个依赖项随即被处理,最后输出到称之为 bundles 的文件中,我们将在下一章节详细讨论这个过程。
可以通过在 webpack 配置中配置 entry 属性,来指定一个入口起点(或多个入口起点)。默认值为 ./src

单入口

module.exports = {
  entry: './path/to/my/entry/file.js'
};

多入口

module.exports = {
  entry: {
        a: './src/a.js',
        b: './src/b.js'
    },
};

根据应用程序的特定需求,可以以多种方式配置 entry 属性,单入口为字符串,多入口为对象

出口【output】

output 属性告诉 webpack 在哪里输出它所创建的 bundles,以及如何命名这些文件,默认值为 ./dist。基本上,整个应用程序结构,都会被编译到你指定的输出路径的文件夹中。你可以通过在配置中指定一个 output 字段,来配置这些处理过程:

单入口

const path = require('path')
module.exports = {
  output: {
    filename: 'bundle.js’,
    path: path.join(__dirname, 'dist'),
  }
};

多入口

const path = require('path')
module.exports = {
  output: {
    filename: '[name].js',
    path: path.join(__dirname, 'dist'),
  }
};

多入口通过占位符确保文件名称的唯一

在上面的示例中,我们通过 output.filenameoutput.path 属性,来告诉 webpack bundle 的名称,以及我们想要 bundle 生成(emit)到哪里。可能你想要了解在代码最上面导入的 path 模块是什么,它是一个 Node.js 核心模块,用于操作文件路径

output 属性还有更多可配置的特性,如果你想要了解更多关于 output 属性的概念,你可以通过阅读webpack来了解更多。

loader

loader 让 webpack 能够去处理那些非 JavaScript 文件(webpack 自身只理解 JavaScript)。loader 可以将所有类型的文件转换为 webpack 能够处理的有效模块,然后你就可以利用 webpack 的打包能力,对它们进行处理。
本质上,webpack loader 将所有类型的文件,转换为应用程序的依赖图(和最终的 bundle)可以直接引用的模块

注意,loader 能够 import 导入任何类型的模块(例如 .css 文件),这是 webpack 特有的功能,其他打包程序或任务执行器的可能并不支持。我们认为这种语言扩展是有很必要的,因为这可以使开发人员创建出更准确的依赖关系图。

在 webpack 的配置中 loader 有两个参数:
1.test 属性,用于标识出应该被对应的 loader 进行转换的某个或某些文件。
2.use 属性,表示进行转换时,应该使用哪个 loader

module.exports = {
  module: {
    rules: [
      { test: /\.txt$/, use: 'raw-loader' }
    ]
  }
};

“嘿,webpack 编译器,当你碰到「在 require()/import 语句中被解析为 '.txt' 的路径」时,在你对它打包之前,先使用 raw-loader 转换一下。”

插件【plugins】

想要使用一个插件,你只需要 require() 它,然后把它添加到 plugins 数组中。多数插件可以通过选项(option)自定义。你也可以在一个配置文件中因为不同目的而多次使用同一个插件,这时需要通过使用 new 操作符来创建它的一个实例

const HtmlWebpackPlugin = require('html-webpack-plugin'); // 通过 npm 安装
const webpack = require('webpack'); // 用于访问内置插件

const config = {
  plugins: [
    new HtmlWebpackPlugin({template: './src/index.html'})
  ]
};

module.exports = config;

webpack 提供许多开箱可用的插件!查阅我们的插件列表获取更多信息。

模式

通过选择 developmentproduction 之中的一个,来设置 mode 参数,你可以启用相应模式下的 webpack 内置的优化

module.exports = {
  mode: 'production'
};

模式的使用可以参照 我的另一篇文章 vue-cli 3 webpack多环境打包

以上就是本章的全部内容

相关文章

  • 玩转webpack 初识webpack

    为什么需要构建工具? 浏览器的支持情况尚不统一 使用构建工具可以帮助我们 1.转换ES6语法2.转换JSX3.cs...

  • 初识webpack4.x(一)

    系列文章 初识webpack(一) 初识webpack(二)之常用插件配置 初始webpack(三)之环境分离终结...

  • webpack 初识

    1.Webpack是什么,它有什么作用 把你的项目当做一个整体,通过一个给定的主文件(如:index.js),We...

  • 初识Webpack

    标签(空格分隔): 前端 Webpack 是当下最热门的前端资源模块化管理和打包工具。它可以将许多松散的模块按照依...

  • 初识 webpack

    1. 初始化项目 首先,让我们用命令行创建一个名为 webapp 的项目文件夹,初始化 npm,本地安装 webp...

  • webpack初识

    webpack-demo Git Repowebpack-API Concepts 概念 At its core,...

  • 初识webpack

    今天有空,刚好学习了一点webpack相关的知识,在这里整理一番。 下面会给上我的GitHub,里面有6个小dem...

  • webpack 初识

    webpack 构建流程 初始化参数,从配置文件和 shell 语句中读到的参数合并,得到最后的参数 开始编译:用...

  • webpack初识

    1. webpack是什么? webpack是一个模块化开发的打包工具,基于nodejs开发的 2. webpac...

  • webpack初识

    首先我们通过一个简单的例子,让webpack去解析es module html index.js header.j...

网友评论

      本文标题:玩转webpack 初识webpack

      本文链接:https://www.haomeiwen.com/subject/stwvbctx.html