Webpack学习笔记

Webpack学习笔记

入口:entry

  • 入口起点指示webpack应该使用哪个模块,来作为构建其内部依赖图的开始。进入入口起点后,webpack会找出有哪些模块和库是起点(直接和间接)依赖的。

  • 每个依赖项随即被处理,最后输出到称之为bundles的文件中。

  • 可以通过在webpack配置中配置entry属性,来指定一个入口起点(或多个入口起点)。默认值为./src。

出口:output

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

loader

loader让webpack能够去处理那些非JavaScript文件(webpack自身只理解JavaScript)。loader可以将所有类型的文件转换为webpack能够处理的有效模块,然后你就可以利用webpack的打包能力,对它们进行处理。

本质上,webpack loader将所有类型的文件,转换为应用程序的以来图(和最终的bundle)可以直接引用的模块。

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

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

const path = require('path');
const config ={
    output:{
        filename:'my-first-webpack.bundle.js'
    },
    module:{
        rules:[
            {test:/\.txt$/,use:'raw-loader'}
        ]
    }
};

以上配置中,对一个单独的module对象定义了rules属性,里面包含两个必须属性:test和use。这告诉webpack编译器(compiler)如下信息:

当你碰到[在require()/import语句中被解析为’.txt’的路径]时,在你对它打包之前,先使用raw-loader转换一下。
重要的是记得,在webpack配置中定义loader时,要定义在module.rules中,而不是rules。

插件:plugins

loader被用于转换某些类型的模块,而插件则可以用于执行 范围更广的任务。插件的范围包括,从打包优化和压缩,一直到重新定义环境中的变量。插件接口功能极其强大,可以用来处理各种各样的任务。

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

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

const config = {
  module: {
    rules: [
      { test: /\.txt$/, use: 'raw-loader' }
    ]
  },
  plugins: [
    new webpack.optimize.UglifyJsPlugin(),
    new HtmlWebpackPlugin({template: './src/index.html'})
  ]
};

module.exports = config;

模式

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

模块:modules

在模块化编程中,开发者将程序分解成离散功能块,并称之为模块。
每个模块具有比完整程序更小的接触面,使得校验、调试、测试轻而易举。精心编写的模块提供了可靠的抽象和封装界限,使得应用程序中每个模块都具有条理清楚的设计和明确的目的。

什么是webpack模块

对比node.js模块,webpack模块能够以各种方式表达它们的依赖关系,几个例子如下:
- ES2015 import 语句
- CommonJS require()语句
- AMD define 和 require语句
- css/sass/less文件中的@import语句
- 样式(url(…))或HTML文件(<\img src=…>)中的图片链接

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值