webpack简介

Posted 攻城狮的进阶

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了webpack简介相关的知识,希望对你有一定的参考价值。

本质上,webpack 是一个现代 javascript 应用程序的静态模块打包器(module bundler)。当 webpack 处理应用程序时,它会递归地构建一个依赖关系图(dependency graph),其中包含应用程序需要的每个模块,然后将所有这些模块打包成一个或多个 bundle

webpack的核心:

  • 入口(entry)
  • 输出(output)
  • loader
  • 插件(plugins)

入口(entry):用来规定使用哪个模块作为入口,进入入口后,webpack会找出入口模块所依赖的其他模块进行处理。

配置 entry 属性,来指定一个入口起点(或多个入口起点)。默认值为 ./src

举个栗子:

module.exports = {
  entry: ‘./app/index.js‘
};

以上例子其实是以下代码的简写

 

const config = {
  entry: {
    main: ‘./app/index.js‘
}
};

 

输出(output):output 属性告诉 webpack 在哪里输出它所创建的 bundles,以及如何命名这些文件,默认值为 ./dist

举个栗子:

module.exports = {
  output: {
    path: "/public",// 打包后的文件存放的地方
    filename: "bundle.js"// 打包后输出文件的文件名
  }
}

loader:webpack自身只理解javascript文件,所以loader的作用就是处理非javascript文件,然后webpack再对他们进行处理。

在 webpack 配置中定义 loader 时,要定义在 module.rules中。

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

主要的两个配置:

test: 需要被转换的文件后缀

use:使用哪种类型的loader去转换

这就相当于告诉webpack,当遇到.txt文件时,需要先用loader处理后再进行打包。

插件(plugins):使用插件,需要通过require引入,然后把它添加到plugins数组中,并通过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 内置的优化

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

如果设置为development,则会将 process.env.NODE_ENV 的值设为 development。启用 NamedChunksPlugin 和 NamedModulesPlugin

如果设置为production 会将 process.env.NODE_ENV 的值设为 production。启用 FlagDependencyUsagePluginFlagIncludedChunksPluginModuleConcatenationPluginNoEmitOnErrorsPluginOccurrenceOrderPluginSideEffectsFlagPlugin 和 UglifyJsPlugin.

 



以上是关于webpack简介的主要内容,如果未能解决你的问题,请参考以下文章

Webpack 简介

webpack

webpack源码之ast简介

Vue报错:Uncaught TypeError: Cannot assign to read only property 'exports' of object 的解决方法(代码片段

Android 逆向Linux 文件权限 ( Linux 权限简介 | 系统权限 | 用户权限 | 匿名用户权限 | 读 | 写 | 执行 | 更改组 | 更改用户 | 粘滞 )(代码片段

SpringCloud系列十一:SpringCloudStream(SpringCloudStream 简介创建消息生产者创建消息消费者自定义消息通道分组与持久化设置 RoutingKey)(代码片段