主要概念:

  1. Entry :   webpack的入口,构建的第一步从entry开始。
  2. Output :   输出,经过webpack处理后的得到最终想要的代码。
  3. Loader :   模块转换工具,把模块的原本内容转换成新的浏览器能看得懂的东西。
  4. Plugin :    插件,可以注入你需要扩展的东西。
  5.   Module:  在webpack中一切皆模块,一个模块对应一个文件,webpack会从配置的entry开始递归找出所有的模块。
  6. Chunk :   代码块,用于代码合并和分割。

context:

  webpack内相对路径的根目录,默认为webpack所在的当前目录。可配置    (context必须为绝对路径)

    

module.export = {
context: path.resolve(__dirname, 你要改变的路径)
}

Entry:

  入口模块的路径,可以写成 字符串、 数组 和 对象格式。

  

entry: './index.js'

entry: ['./index1.js', './index2.js']

entry: {a: './index1.js', b: ['./index2.js', './index3.js']}

Output :

  output配置怎样输出最终想要的代码,为一个对象,包含一系列的配置

  1,filename

    如果只有一个输出文件,那么直接写  filename: ‘bundle.js’

    如果有多个chunk要输出,那么就要用到name变量了,webpack会为每一个chunk取一个名字,这时候就可以根据chunk的名称来区分输出的文件   filename:' [name].js'

  2,chunkFilename

    配置无入口的chunk在输出时的文件名称。

  3,path

    配置输出文件在本地存放的目录,必须是string类型的绝对路径。

  4,publicPath

  5,crossOrginLoading

  6,libraryTarge和library

Module:

  module是用来配置如何处理模块

  1,rules :    配置模块的读取和解析规则,一般是配置loader,类型为一个数组,里面的每一项都用来描述如何去处理匹配的文件。

         一般通过test、include和exclude三个配置来匹配loader要应用的文件

           选中后的文件通过use配置项来应用loader,可以应用一个loader或者按照前后顺序来应用一组的loader,还可以给loader添加参数。

        

module: {
rules: [
{
test:/\.less$/,                          
use: ['style-loader', 'css-loader', 'less-loader'],
include: path.resolve(__dirname, 'static/css')
},
{
test: /\.js$/,                      或者: test: [/\.jsx$/,/\.js$/]  
use: ['babel-loader'],
exclude: path.resolve(__dirname, 'node_modules') 或者 exclude: [path.resolve(__dirname,'node_modules'), path.resolve(__dirname, 'nouse_modules')]
}
]
}

  2, noParse

     让webpack忽略对部分没有采用模块化文件的递归解析和处理。

  3,parser

       配置哪些模块化功能可以被解析,哪些不解析。  parser可以精确到语法层面上,noParse只能控制哪些文件不解析。 

 

 Resolve :

  resolve是用来配置webpack怎么寻找模块对应的文件。

  1,akias

    resolve.alias配置是通过别名来把原来的导入路径映射到一个新的路径

resolve:{
alias: {
'@': resolve('src')
}
}

    实际上是把导入语句中的@ 替换成了 '/src'

  2,mainFields

    有些第三方模块会提供几份不同环境的代码,比如es5代码,es6代码等。mainFields用来配置 引用第三方模块的时候,引用哪个版本的文件。

    默认为 mainFields: ['browser', 'main']

  3,extensions

    在导入的文件没有带文件后缀时,webpack会自动带上extensions里面提供的后缀去寻找文件是否存在。

    举例: 在vue项目中,一般写法为 extensions:['.js',  '.vue', '.json']

  4,modules

    resolve。modules是用来配置webpack去哪些目录去找第三方模块。默认是node_modules目录,如果有大量的模块都在 ./src/components 里面,我们可以用modules来优化。

      modules: ['./src/components', 'node_modules']

  5,descriptionFiles 

    用来配置第三方模块的文件名称,也就是package.json文件。

  6,enforceExtension

    如果配置为true,所有的导入文件语句都要带文件后缀。

  7,enforceModuleExtension

    和enforceExtension作用类似,但只对node_modules下的模块生效。

Plugin:

  plugin的配置项接收一个数组,数组的每一项都是要使用的插件的实例,插件需要的参数通过构造函数传入。 下面的插件是生成html文件

const HtmlWebpackPlugin = require('html-webpack-plugin')

module.exports = {
plugins: [
new HtmlWebpackPlugin({
filename: 'index.html'
})
]
}

  配置plugin的难点是在 你用的plugin本身需要的配置项。

Target:

  让webpack构建出针对不同运行环境的代码。有以下选项:

  1. web    默认,针对浏览器
  2. node   require语句加载chunk,针对node
  3. async-node  异步加载chunk
  4. webworker   针对webworker

.......

DevTool:

  配置webpack如何生成source map,默认是false。想让构建的代码生成source map方便调试,可以这样配置:

module.exports = {
devtool: 'source-map'
}

watch:

  webpack支持监听文件变化重新编译。默认是关闭的。

  在使用devserver时,监听默认是开启的。

  

Externals:

  用来告诉webpack哪些模块不用被打包。

  比如我们直接在项目的html中引入了jquery   <srcipt src='jquery.min.js'></script>。如果我们需要在模块中使用,可以还需要 import $ from 'jquery',这样就导致了jquery出现了两次。

  通过externals配置可以告诉webpack哪些已经引入全局了,针对这些全局的不用打包,可以直接使用全局变量。

module.exports = {
externals: {
jquery: 'jQuery'
}
}

ResolveLoader:

  resolveloader告诉webapck如何去找到对应的loader,默认在使用loader时是通过它的包名来引用的。

  

关于webpack 以及 webpack配置和常用插件的学习记录 (1)的更多相关文章

  1. 关于webpack 以及 webpack配置和常用插件的学习记录 (2) ------ devServer

    DevServer: devserver会启动一个http服务器用于服务网页请求,接收webpack发出的文件变化的信号.通过websocket协议自动刷新网页,实现实时预览. 安装: npm i w ...

  2. Sublime Text3安装、配置及常用插件(陆续补全中~)

    一.安装Sublime Text3 网址:http://www.sublimetext.com/3 注册码:(sublime Text3汉化和激活注册码) ----- BEGIN LICENSE -- ...

  3. ELK安装和配置及常用插件安装

    环境 CentOS 7.3 root 用户 JDK 版本:1.8(最低要求),主推:JDK 1.8.0_121 以上 关闭 firewall systemctl stop firewalld.serv ...

  4. Eclipse常见配置及常用插件

    tomcat为能同时运行多个项目而不崩溃,需要配置一下jvm设置 -Xms1024m -Xmx1024m -XX:PermSize=128m -XX:MaxPermSize=512m

  5. java.time包常用类API学习记录

    Java8出来已那么多年了,java.time包之前一直没有使用过,最近正好有用到,在此做个记录. 上图列出了java.time包下的类,接下来我们详细看下其中每个类的用法. Clock:获取到当前时 ...

  6. 常用linux命令学习记录

    批量替换文件中字符串: sed -i "s/ITSApi/icallApi/g" `grep ITSApi -rl icallbiz` 解释: 将icallbiz目录文件中包涵的I ...

  7. webpack常用插件配置记录

    github仓库:https://github.com/llcMite/webpack.git 1)html-webpack-plugin    (用于模板生成html,自动引入output文件) c ...

  8. webpack 打包过程及常用插件

    前言 要理解webpack 首先明白三个概念:module,chunk,bundles,即输入,中间态,输出. chunk: This webpack-specific term is uesd in ...

  9. webpack 入门和常用插件的使用

    常用配置参数 module.exports = { context: path.resolve(__dirname, '../'), entry: { app: './src/main.js' }, ...

随机推荐

  1. CSS--抽屉(dig.chouti.com)页面

    一.设置整体页面宽度 一般写个样式命名为.d{}设置整体页面指定宽度和居中,京东命名为.w{},bootstrap里命名为.container{} 1 2 3 4 5 6 7 8 9 10 11 12 ...

  2. 推荐一款基于XNA的开源游戏引擎《Engine Nine》

    一.前沿导读 XNA是微软基于.Net部署的下一代3D/2D游戏开发框架,其实XNA严格来说类似下一代的DirectX,当然不是说XNA会取代DirectX,但是基于XNA我们对于面向XBOX360, ...

  3. C# 把本地文件上传到服务器上,和从服务器上下载文件

    方法一.通过Ajax方式上传文件(input file),使用FormData进行Ajax请求 <div  > <input type="file" name=& ...

  4. URAL 1355. Bald Spot Revisited(数论)

    题目链接 题意 : 一个学生梦到自己在一条有很多酒吧的街上散步.他可以在每个酒吧喝一杯酒.所有的酒吧有一个正整数编号,这个人可以从n号酒吧走到编号能整除n的酒吧.现在他要从a号酒吧走到b号,请问最多能 ...

  5. POJ2513 Colored Sticks(Trie+欧拉回路)

    Description You are given a bunch of wooden sticks. Each endpoint of each stick is colored with some ...

  6. android 仿QQ气泡聊天界面

    1.现在的QQ,微信等一些APP的聊天界面都是气泡聊天界面,左边是接收到的消息,右边是发送的消息, 这个效果其实就是一个ListView在加载它的Item的时候,分别用了不同的布局xml文件. 2.效 ...

  7. 函数形参为基类数组,实参为继承类数组,下存在的问题------c++程序设计原理与实践(进阶篇)

    示例: #include<iostream> using namespace std; class A { public: int a; int b; A(int aa=1, int bb ...

  8. 小规模kvm宿主机管理-webvirtmgr安装

    1.前言WebVirtMgr是近两年来发展较快,比较活跃,非常清新的一个KVM管理平台,提供对宿主机和虚机的统一管理,它有别于kvm自带的图形管理工具(virtual machine manager) ...

  9. dos窗口运行java文件需要jar依赖

    执行java文件时候,有些里面依赖了java之外的jar,这是识别不到的,运行java命令的时候,带上jar路径: java -cp .;jar路径(加上jar名字)  java文件名 例:java ...

  10. kali linux之edb--CrossFire缓冲区溢出

    漏洞的罪恶根源------变量,数据与代码边界不清,开发人员对用户输入没做过滤,或者过滤不严 如这个脚本,写什么,显示什么,但是加上:,|,&&,后面加上系统命令,就执行命令了 缓冲区 ...