崴博.派克诞生于遥远西方的勇士之地,拥有着高超的机械技艺,善于运用各类工具来实现一些看似不可能完成的事。游历王者大陆时机缘巧合遇到了年轻的墨子,与之成为好友。后协助大宗师墨子建造了大陆第一雄城,被后人称为上古文明终结后最伟大的奇迹——长安!长安以“方舟”为驱动核心中枢,配合层出不断的机关,守护着华丽的大明宫。派克为人低调,不喜出如今大众视野,他是需求人性启迪的理想主义者,信奉着惟有光荣进化才能实现人类的所有潜能。css
姓名:崴博.派克(webpack)html
热度排名:T0vue
胜率:98%react
登场率:80%(中大型项目90%)webpack
Ban率:10%web
操做难度:★★★★★typescript
cd:0秒npm
派克开场就会携带者他的专属装备【loader】,可以提供给他属性,而且能在商店里升级为进阶物品【plugin】,从而加强他的技能。json
派克指定初始装备开始进化的准备,期间享受韧性加成20%,升级后可指定多个装备进化。数组
(entry用于指定入口文件,可配置一个或多个。)
基础使用:
module.exports = {
entry: './path/to/my/entry/file.js' // 默承认配置一个路径字符串
};
复制代码
进阶使用:
./src
。const config = {
entry: './src/a.js'
};
复制代码
const config = {
entry: ['./src/a.js','./src/b.js','./src/c.js',]
};
复制代码
const config = {
entry: {
app: './src/app.js',
vendors: './src/vendors.js'
}
};
复制代码
cd:10秒
派克在通过n(取决于当前派克进行工做的复杂度)秒的吟唱后传送至指定地点。
(output用于配置打包完成文件的输出和命名,配置output的最低标准是设置一个对象包含如下两点:)
基础使用:
const path = require('path');
module.exports = {
entry: './src/js/file.js',
output: {
path: path.resolve(__dirname, 'dist'),
filename: 'test.bundle.js'
}
};
复制代码
进阶使用:
当配置了多入口文件而且想输出不一样chunk时应该对filename使用占位符来保证文件名称的惟一性。
占位符:
name——使用入口名称
id——使用内部chunk id
hash——使用每次构建过程当中的惟一hash
chunkhash——使用基于每一个chunk内容的hash
query——使用文件名?后面的字符串
{
entry: {
app: './src/app.js',
search: './src/search.js'
},
output: {
filename: '[name].js',
path: __dirname + '/dist'
}
}
复制代码
cd:8秒
派克能够同化其余英雄的技能,将其转换为自身可用的能量。成功吸收基础属性+200%。
(webpack自己只能处理js文件。loader能够将其它文件类型转换为webpack可以处理的模块,并对其进行打包或其它操做。它与modules模块配合使用,经过配置module.rules实现。loader至关于其余工具中的task(任务)。)
loader的核心有两个属性:
基础配置:
const path = require('path');
const config = {
output: {
filename: 'test.bundle.js'
},
module: {
rules: [
{ test: /\.txt$/, use: 'raw-loader' }
]
}
};
module.exports = config;
复制代码
进阶配置:
rules容许你在处理一个文件时配置多个loader,只须要给use传入一个数组包含不一样loader对象
module: {
rules: [
{
test: /\.css$/,
use: [
{ loader: 'style-loader' },
{
loader: 'css-loader',
options: {
modules: true
}
}
]
}
]
}
复制代码
骚操做:能够在import语句使用!将资源中的loader分开,这样能够不配置webpack从而使用一个内联方式进行loader处理,但不推荐这种方式,由于它很难维护。
import Styles from 'style-loader!css-loader?modules!./styles.css';
复制代码
cd:35秒
派克进化loader,经过plugin对5000码范围内的己方英雄进行增幅、强化,并进入霸体状态持续10秒。
(不一样于loader用来解析非js的文件类型,plugin能够用来处理更复杂的任务,包括打包、优化、压缩,最小到重定义环境变量。它是很是强大的,除了插件市场提供的成熟插件,还能够本身进行编写。plugin为loader带来了更多的特性,它存在的目的在于解决loader没法实现的其余事情。
使用插件只须要require()
它,而后再添加到plugin模块中,一般状况下多数插件是可自定义的,因此想在一个配置文件中使用不一样配置功能的插件,必须经过new建立一个新的实例。)
基础配置:
const HtmlWebpackPlugin = require('html-webpack-plugin'); // 经过 npm 安装
const webpack = require('webpack'); // 用于访问内置插件
const config = {
module: {
rules: [
{ test: /\.txt$/, use: 'raw-loader' }
]
},
plugins: [
new HtmlWebpackPlugin({template: './src/index.html'})
]
};
module.exports = config;
复制代码
cd:1.5秒
派克切换形态,工做狂模式:移速增长50%,艺术家模式:减速30%同时增长自身韧性50%,免疫控制。
(经过mode
配置开发环境(development)和生产环境(production),能够启用相应模式下webpack的内置优化。)
development:启用NamedChunksPlugin
和NamedModulesPlugin
插件
production:启用FlagDependencyUsagePlugin
,FlagIncludedChunksPlugin
, ModuleConcatenationPlugin, NoEmitOnErrorsPlugin, OccurrenceOrderPlugin, SideEffectsFlagPlugin
和 UglifyJsPlugin
插件。
配置:
module.exports = {
mode: 'production' // 或development
};
复制代码
cd:60秒
派克指定位置进入快速寻路模式,并自动分析最近路线,且无视地形障碍。
(经过配置resolve来解析文件路径,reslove中能够配置使用专属插件。)
目前支持解析三种文件路径: 绝对路径、相对路径、模块路径
配置alias别名(最经常使用)
建立 import 或 require 的别名可使模块引入变简单。 例:
alias: {
Utilities: path.resolve(__dirname, 'src/utilities/'),
Templates: path.resolve(__dirname, 'src/templates/')
}
复制代码
未配置alias:
import Utility from '../../utilities/utility';
复制代码
已配置alias:
import Utility from 'Utilities/utility';
复制代码
派克拥有能够储存任何物质的空间物,能够分类储存装备。激活后装备栏增长3,自身移速减20%
(经过配置module处理项目中的不一样类型的模块。) rules匹配规则数组(最经常使用) 建立模块时,匹配请求的规则数组。经过规则可以修改模块的建立方式。这些规则可以对模块(module)应用 loader,或者修改解析器(parser)。
const config = {
module: {
rules: [
{ test: /\.css$/, use: 'css-loader' }
]
}
};
复制代码
raw-loader
加载文件原始内容(utf-8)val-loader
将代码做为模块执行,并将 exports 转为 JS 代码url-loader
像 file loader 同样工做,但若是文件小于限制,能够返回 data URLfile-loader
将文件发送到输出文件夹,并返回(相对)URLjson-loader
加载 JSON 文件(默认包含)json5-loader
加载和转译 JSON 5 文件cson-loader
加载和转译 CSON 文件script-loader
在全局上下文中执行一次 JavaScript 文件(如在 script 标签),不须要解析babel-loader
加载 ES2015+ 代码,而后使用 Babel 转译为 ES5buble-loader
使用 Bublé 加载 ES2015+ 代码,而且将代码转译为 ES5traceur-loader
加载 ES2015+ 代码,而后使用 Traceur 转译为 ES5ts-loader
或 awesome-typescript-loader 像 JavaScript 同样加载 TypeScript 2.0+coffee-loader
像 JavaScript 同样加载 CoffeeScripthtml-loader
导出 HTML 为字符串,须要引用静态资源pug-loader
加载 Pug 模板并返回一个函数jade-loader
加载 Jade 模板并返回一个函数markdown-loader
将 Markdown 转译为 HTMLreact-markdown-loader
使用 markdown-parse parser(解析器) 将 Markdown 编译为 React 组件posthtml-loader
使用 PostHTML 加载并转换 HTML 文件handlebars-loader
将 Handlebars 转移为 HTMLmarkup-inline-loader
将内联的 SVG/MathML 文件转换为 HTML。在应用于图标字体,或将 CSS 动画应用于 SVG 时很是有用。style-loader
将模块的导出做为样式添加到 DOM 中css-loader
解析 CSS 文件后,使用 import 加载,而且返回 CSS 代码less-loader
加载和转译 LESS 文件sass-loader
加载和转译 SASS/SCSS 文件postcss-loader
使用 PostCSS 加载和转译 CSS/SSS 文件stylus-loader
加载和转译 Stylus 文件mocha-loader
使用 mocha 测试(浏览器/NodeJS)eslint-loader
PreLoader,使用 ESLint 清理代码jshint-loader
PreLoader,使用 JSHint 清理代码jscs-loader
PreLoader,使用 JSCS 检查代码样式coverjs-loader
PreLoader,使用 CoverJS 肯定测试覆盖率vue-loader
加载和转译 Vue 组件polymer-loader
使用选择预处理器(preprocessor)处理,而且 require() 相似一等模块(first-class)的 Web 组件angular2-template-loader
加载和转译 Angular 组件ProgressPlugin
(webpack自带):用于统计打包进度IgnorePlugin
(webpack自带):忽略本地的一些模块DllPlugin
(webpack自带):预打包文件DllReferencePlugin
(webpack自带):项目打包引用预打包生成的文件AssetsWebpackPlugin
:为打包生成的js等生成路径引用指引HappyPack
:运用多核加速打包ExtractTextPlugin
:将打包中的css单独抽离出来EnvironmentPlugin
(webpack自带):在webpack层面定义项目中可使用的全局变量DefinePlugin
(webpack自带):在webpack层面定义项目中可使用的全局变量 与EnvironmentPlugin的形式不一样而已CleanWebpackPlugin
:清理指定目录的文件CopyWebpackPlugin
:将指定目录的文件赋值到指定目录下HtmlWebpackPlugin
:webpack打包后自动生成html页面ParallelUglifyPlugi
n:加速压缩本期英雄介绍完毕,祝你们早日国服王者,咱们下期见。