webpack 介绍 安装 常用命令
转自:http://www.cnblogs.com/sloong/p/5584684.html
只可参考,不可商用
Webpack是一款用户打包前端模块的工具,它将根据模块的依赖关系进行静态分析,然后将这些模块按照指定的规则生成对应的静态资源。主要是用来打包在浏览器端使用的javascript的。同时也能转换、捆绑、打包其他的静态资源,包括css、image、font file、template等
webpack的官网是 http://webpack.github.io/ ,文档地址是 http://webpack.github.io/docs/
市面已存在大量的模块管理和打包工具,为什么还重复造轮子,webpack有什么特色?
这些已有的模块化工具并不能很好的完成如下的目标:
- 将依赖树拆分成按需加载的块
- 初始化加载的耗时尽量少
- 各种静态资源都可以视作模块
- 将第三方库整合成模块的能力
- 可以自定义打包逻辑的能力
- 适合大项目,无论是单页还是多页的 Web 应用
webpack 特点
代码拆分
Webpack 有两种组织模块依赖的方式,同步和异步。异步依赖作为分割点,形成一个新的块。在优化了依赖树后,每一个异步区块都作为一个文件被打包。
Loader
Webpack 本身只能处理原生的 JavaScript 模块,但是 loader 转换器可以将各种类型的资源转换成 JavaScript 模块。这样,任何资源都可以成为 Webpack 可以处理的模块。
智能解析
Webpack 有一个智能解析器,几乎可以处理任何第三方库,无论它们的模块形式是 CommonJS、 AMD 还是普通的 JS 文件。甚至在加载依赖的时候,允许使用动态表达式 require("./templates/" + name + ".jade")。
插件系统
Webpack 还有一个功能丰富的插件系统。大多数内容功能都是基于这个插件系统运行的,还可以开发和使用开源的 Webpack 插件,来满足各式各样的需求。
快速运行
Webpack 使用异步 I/O 和多级缓存提高运行效率,这使得 Webpack 能够以令人难以置信的速度快速增量编译。
总结下来其主要的优势:
- 按需加载模块,按需进行懒加载,在实际用到某些模块的时候再增量更新
- webpack 是以 commonJS 的形式来书写脚本,但对 AMD/CMD 的支持也很全面,方便旧项目进行代码迁移。
- 能被模块化的不仅仅是 JS 了,能处理各种类型的资源。
- 开发便捷,能替代部分 grunt/gulp 的工作,比如打包、压缩混淆、图片转base64等。
- 扩展性强,插件机制完善
安装
首先要安装 Node.js, Node.js 自带了软件包管理器 npm
用npm 安装webpack
$ npm install webpack -g
此时 Webpack 已经安装到了全局环境下,可以通过命令行 webpack -h 查看相关指令
通常我们会将webpack安装到项目依赖,这样就可以使用本地版本的webpack
//进入项目目录
//确定已有package.json,没有就npm init 创建
$ npm install webpack --save-dev//查看webpack 版本信息
$ npm info webpack
//安装指定版本
$ npm install webpack@1.31.x --save-dev
如果要使用webpack开发工具,要单独安装 webpack-dev-server
$ npm install webpack-dev-server --save-dev
常用命令
webpack
构建命令,webpack的常用参数
$ webpack --config webpack.min.js //另一份配置文件$ webpack --display-error-details //显示异常信息$ webpack --watch //监听变动并自动打包$ webpack -p //压缩混淆脚本,这个非常非常重要!$ webpack -d //生成map映射文件,告知哪些模块被最终打包到哪里了
webpack-dev-server
webpack-dev-server是一个小型的node.js Express服务器,它使用webpack-dev-middleware中间件来为通过webpack打包生成的资源文件提供Web服务。它还有一个通过Socket.IO连接着webpack-dev-server服务器的小型运行时程序。webpack-dev-server发送关于编译状态的消息到客户端,客户端根据消息作出响应。
webpack-dev-server有两种模式支持自动刷新——iframe模式和inline模式
- 在iframe模式下:页面是嵌套在一个iframe下的,在代码发生改动的时候,这个iframe会重新加载
- 在inline模式下:一个小型的webpack-dev-server客户端会作为入口文件打包,这个客户端会在后端代码改变的时候刷新页面
使用iframe模式,无需额外配置,只需在浏览器输入
http://localhost:8080/webpack-dev-server/index.html
使用inline模式有两种方式:命令行和nodejs API
命令行: 在运行时,加上 --inline 选项
$ webpack-dev-server --inline
访问,通过
http://localhost:8080
就可以访问nodejs API 方式 ,需要手动把 webpack-dev-server/client?http://localhost:8080 加到配置文件的入口文件处
webpac-dev-server支持Hot Module Replacement,即模块热替换,在前端代码变动的时候无需整个刷新页面,只把变化的部分替换掉
webpack 介绍 安装 常用命令相关推荐
- redis 介绍和常用命令
redis 介绍和常用命令 redis简介 Redis 是一款开源的,基于 BSD 许可的,高级键值 (key-value) 缓存 (cache) 和存储 (store) 系统.由于 Redis 的键 ...
- nvm介绍及常用命令
nvm介绍及常用命令 1.为什么使用nvm? nvm是一个管理nodejs版本的工具.在实际的开发中,有些项目的开发依赖需要低版本的nodejs运行环境,此时我们就需要使用nvm来降低nodejs版本 ...
- npm介绍以及常用命令
npm介绍 npm是跟Node一起安装的包管理工具(node package manage) 常有以下用途: 1.从npm服务器上下载别人编写的第三方包到本. 2.从npm服务器上下载并安装别人编写的 ...
- docker的介绍和常用命令
最近,微服务很火,所以spring cloud , dubbo也跟着一起流行起来了,紧跟其后的则是容器化技术的出现, docker则是容器化技术领头羊, docker是使用google出的go语言开发 ...
- Linux简单介绍及常用命令
Linux 参考整理 https://www.runoob.com/linux/linux-tutorial.html 介绍 Linux 是一套免费使用和自由传播的类 Unix 操作系统,是一个基于 ...
- Git详细用法:Git概述 安装 常用命令 分支操作 团队协作 、GitHub、idea集成Git、idea集成GitHub、Gitee 码云、GitLab
0 课程介绍 说明: 在公司想要使用idea集成git: 首选需要下载安装Git(查看第2章) 之后在中设置用户签名(查看3.1) 然后在idea中集成Git(查看第7章) - 0.1 学习目标 第1 ...
- DOS介绍以及常用命令
DOS介绍 来自百度百科: dos,是磁盘操作系统的缩写,是个人计算机上的一类操作系统.DOS是1979年由微软公司为IBM个人电脑开发的MS-DOS,它是一个单用户单任务的操作系统.DOS是Disk ...
- redis学习(二) redis数据结构介绍以及常用命令
redis数据结构介绍 我们已经知道redis是一个基于key-value数据存储的数据结构数据库,这里的key指的是string类型,而对应的value则可以是多样的数据结构.其中包括下面五种类型: ...
- 【java学习之路】(mysql篇)001.mysql基本介绍、常用命令及简单查询
什么是数据库? 数据库: 英文单词DataBase,简称DB.按照一定格式存储数据的一些文件的组合. 顾名思义:存储数据的仓库,实际上就是一堆文件.这些文件中存储了具有特定格式的数据. 什么是数据库管 ...
- Redis介绍及常用命令【转载】
转自:http://langgufu.iteye.com/blog/1434408 一 Redis介绍 Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key- ...
最新文章
- VS调试时提示此项目已经过期
- Linux系统Git环境配置
- boost中的shared_ptr的一些理解
- 我理解的配置管理系统
- 【转载】zookeeper学习
- Java网络编程之IP地址和InetAddress类
- Linux 进程控制 :进程创建,进程终止,进程等待,程序替换
- maven的安装、路径配置、修改库文件路径和eclipse中的配置、创建maven工程(转)...
- Hazelcast的MapLoader陷阱
- python中doc=parased.getroot()_python中执行sed命令操作源文件时出现错误
- C++基础部分_C++文件操作_二进制文件的写操作---C++语言工作笔记078
- poj 2409 Let it Bead Polya计数
- 感想篇:11)只怀了1/4的才是不够的
- Axios插件和loading的实现
- sqlserver200864位下载_Microsoft SQL Server 2008 R2 官方简体中文正式版下载
- HardDisk读取速度
- NPN PNP 的区别
- python如何读取dbf文件_python2.7读取dbf文件的正确姿势
- 报表设计中的几个SQL技巧
- 不能有比这个再靠谱的星座分析了