webpack 2 系列
webpack 2 系列
webpack 是一个强大的工具,学会通过工具来解决开发效率问题,是每一个 工程师都必备的技能之一。
那么我们来从零开始搭建一个 基于webpack 2 到 开发架子,来提升自己到开发速度、体验、代码编译、打包、压缩等等功能。
首先介绍一下国内 到 webpack 社区网站,webpack国内社区
第一步、 我们要做什么?
在开始搭建之前,我们得清晰到考虑到,我们搭建这个开发架子是用来做什么的,常见的,我们需要 起一个开发环境的服务以便于我们访问到我们开发到页面,然后我们需要打包压缩我们的静态文件,并且将压缩过的文件放到对应的位置。甚至可能会用到代理等等功能。
第二个、怎么做?
首先我们 npm init 一个 package.json 的文件,然后引入 webpack。往往这个时候很多同学可能就不知道怎么办了,这个时候需要去上面提到的网站中寻找对应的钩子或者叫api。这里我简单介绍下,在webpack 2 中,常常会用到的api 包括 entry 、 output 、pluhins、devServer 等等。如下面代码所示
module.exports = {
entry: './src/app.js',
output: {
filename: 'bunlde.js',
path: path.resolve(__dirname, 'dist')
},
module: {
rules: {}
},
plugins: [
new webpack.optimize.CommonsChunkPlugin({
name: 'bunlde',
fliename: 'build-[hash].min.js'
})
],
devServer: {
contnteBase: './src/',
compress: true,
hot: true,
host: '127.0.0.1',
port: '9000'
}
}
以上代码基本上最基本的webpack的配置文件的写法, 当然需要创建对应的文件夹目录结构
第三步、 启动服务
这里我们一般会怎么做呢? 当然,webpack 给我们提出这样的钩子api。
我们需要做的就是详细的看官方文档中的介绍。在官方文档中,提出来我们需要一个第三方的中间件叫做webpack-dev-server,我们去下载下来。然后我们尝试着去使用他。
如何使用 这个 webpack-dev-server 插件呢?
Config options:
--config Path to the config file
[字符串] [默认值: webpack.config.js or webpackfile.js]
--env Environment passed to the config, when it is a function
Basic options:
--context The root directory for resolving entry point and stats
[字符串] [默认值: The current directory]
--entry The entry point [字符串]
--watch, -w Watch the filesystem for changes [布尔]
--debug Switch loaders to debug mode [布尔]
--devtool Enable devtool for better debugging experience (Example:
--devtool eval-cheap-module-source-map) [字符串]
-d shortcut for --debug --devtool
eval-cheap-module-source-map --output-pathinfo [布尔]
-p shortcut for --optimize-minimize --define
process.env.NODE_ENV="production" [布尔]
--progress Print compilation progress in percentage [布尔]
Module options:
--module-bind Bind an extension to a loader [字符串]
--module-bind-post [字符串]
--module-bind-pre [字符串]
Output options:
--output-path The output path for compilation assets
[字符串] [默认值: The current directory]
--output-filename The output filename of the bundle
[字符串] [默认值: [name].js]
--output-chunk-filename The output filename for additional
chunks
[字符串] [默认值: filename with [id] instead of [name] or [id]
prefixed]
--output-source-map-filename The output filename for the SourceMap
[字符串]
--output-public-path The public path for the assets [字符串]
--output-jsonp-function The name of the jsonp function used for
chunk loading [字符串]
--output-pathinfo Include a comment with the request for
every dependency (require, import, etc.)
[布尔]
--output-library Expose the exports of the entry point as
library [字符串]
--output-library-target The type for exposing the exports of the
entry point as library [字符串]
Advanced options:
--records-input-path Path to the records file (reading) [字符串]
--records-output-path Path to the records file (writing) [字符串]
--records-path Path to the records file [字符串]
--define Define any free var in the bundle [字符串]
--target The targeted execution environment [字符串]
--cache Enable in memory caching
[布尔] [默认值: It's enabled by default when watching]
--watch-stdin, --stdin close when stdin ends [布尔]
--watch-aggregate-timeout Timeout for gathering changes while
watching
--watch-poll The polling interval for watching (also
enable polling) [布尔]
--hot Enables Hot Module Replacement [布尔]
--prefetch Prefetch this request (Example: --prefetch
./file.js) [字符串]
--provide Provide these modules as free vars in all
modules (Example: --provide jQuery=jquery)
[字符串]
--labeled-modules Enables labeled modules [布尔]
--plugin Load this plugin [字符串]
--bail Abort the compilation on first error [布尔]
--profile Profile the compilation and include
information in stats [布尔]
--hot-only Do not refresh page if HMR fails [布尔]
Resolving options:
--resolve-alias Setup a module alias for resolving (Example:
jquery-plugin=jquery.plugin) [字符串]
--resolve-extensions Setup extensions that should be used to
resolve modules (Example: --resolve-extensions
.es6 .js) [数组]
--resolve-loader-alias Setup a loader alias for resolving [字符串]
Optimizing options:
--optimize-max-chunks Try to keep the chunk count below a limit
--optimize-min-chunk-size Try to keep the chunk size above a limit
--optimize-minimize Minimize javascript and switches loaders to
minimizing [布尔]
Stats options:
--color, --colors Enables/Disables colors on the console
[布尔] [默认值: (supports-color)]
--info Info [布尔] [默认值: true]
--quiet Quiet [布尔]
--client-log-level Log level in the browser (info, warning, error or
none) [字符串] [默认值: "info"]
SSL options:
--https HTTPS [布尔]
--key Path to a SSL key. [字符串]
--cert Path to a SSL certificate. [字符串]
--cacert Path to a SSL CA certificate. [字符串]
--pfx Path to a SSL pfx file. [字符串]
--pfx-passphrase Passphrase for pfx file. [字符串]
Response options:
--content-base A directory or URL to serve HTML content from.
[字符串]
--watch-content-base Enable live-reloading of the content-base.
[布尔]
--history-api-fallback Fallback to /index.html for Single Page
Applications. [布尔]
--compress Enable gzip compression [布尔]
Connection options:
--port The port
--socket Socket to listen
--public The public hostname/ip address of the server [字符串]
--host The hostname/ip address the server will bind to
[字符串] [默认值: "localhost"]
选项:
--help, -h 显示帮助信息 [布尔]
--version, -v 显示版本号 [布尔]
--lazy Lazy [布尔]
--inline Inline mode (set to false to disable including client
scripts like livereload) [布尔] [默认值: true]
--open Open default browser [布尔]
好了,这些都是 webpack-dev-server 的 配置参数, 各种对应的 属性和 作用都是可以 通过实验来看到效果。
最后 我们在 package.json 的 scripts 对象中 设置好对应的 启动标签。
最后一步 在 cmd 中 npm start 。 跑起来了!!!
虽然在这次 的 构建 中并没有过多的介绍 各种loader ,因为时间有限,所以大家在实际的 开发过程中遇到什么问题,或者 需要什么样的 loader 的时候可以去 官方文档上去查看,当然也可以在文章下面留言,我们一起来探讨 webpack 的 奥秘。
webpack 2 系列的更多相关文章
- [js高手之路]深入浅出webpack教程系列6-插件使用之html-webpack-plugin配置(下)
上文我们对html-webpack-plugin的实例htmlWebpackPlugin进行了遍历分析,讲解了几个常用属性( inject, minify )以及自定义属性的添加,本文,我们继续深入他 ...
- [js高手之路]深入浅出webpack教程系列5-插件使用之html-webpack-plugin配置(中)
上文我们讲到了options的配置和获取数据的方式,本文,我们继续深入options的配置 一.html-webpack-plugin插件中的options除了自己定义了一些基本配置外,我们是可以任意 ...
- [js高手之路]深入浅出webpack教程系列4-插件使用之html-webpack-plugin配置(上)
还记得我们上文中的index.html文件吗? 那里面的script标签还是写死的index.bundle.js文件,那么怎么把他们变成动态的index.html文件,这个动态生成的index.htm ...
- [js高手之路]深入浅出webpack教程系列3-配置文件webpack.config.js详解(下)
本文继续接着上文,继续写下webpack.config.js的其他配置用法. 一.把两个文件打包成一个,entry怎么配置? 在上文中的webpack.dev.config.js中,用数组配置entr ...
- [js高手之路]深入浅出webpack教程系列7-( babel-loader,css-loader,style-loader)的用法
什么是loader呢,官方解释为文件的预处理器,通俗点说webpack在处理静态资源的时候,需要加载各种loader,比如,html文件,要用html-loader, css文件要用css-loade ...
- [js高手之路]深入浅出webpack教程系列9-打包图片(file-loader)用法
我们还是接着上文继续,本文我们要讲的是图片资源的打包,图片在静态排版中,经常出现的两个位置是css通过background引入背景,还有一种就是在html模板文件中用img标签引入的方式,如果要在we ...
- [js高手之路]深入浅出webpack教程系列8-(postcss-loader,autoprefixer,html-loader,less-loader,ejs-loader)用法
我们接着上文,那么在上篇文章的最后,写到了css-loader的用法,如果你用心发现,就能看到我在style.css样式文件中写了一个这样的样式: div { transition: all ease ...
- [js高手之路]深入浅出webpack教程系列1-安装与基本打包用法和命令参数
[js高手之路]深入浅出webpack教程系列索引目录: [js高手之路]深入浅出webpack教程系列1-安装与基本打包用法和命令参数 [js高手之路]深入浅出webpack教程系列2-配置文件we ...
- [js高手之路]深入浅出webpack教程系列2-配置文件webpack.config.js详解(上)
[js高手之路]深入浅出webpack教程系列索引目录: [js高手之路]深入浅出webpack教程系列1-安装与基本打包用法和命令参数 [js高手之路]深入浅出webpack教程系列2-配置文件we ...
随机推荐
- angular之表达式
1.作用:使用表达式把数据绑定到HTML. 2.语法:表达式写在双打括号内:{{expression}} 3.比较:表达式作用类似于ng-bind指令:建议更多的使用指令. 4.AngularJS表达 ...
- python 获取mac地址zz
通过python获取当前mac地址的方法如下:(1)通用方法,借助uuid模块def get_mac_address(): import uuid node = uuid.getnode() ...
- [OC] 富文本 AttributedString 以及 用富文本解析html文本
AttributedString 为了便于添加新属性,我们一般初始化 NSMutableAttributedString 类型的富文本. NSMutableAttributedString *a ...
- java自动化-数据驱动junit演示,下篇
本文旨在帮助读者介绍,如何使用excle实现数据驱动 本文是上文https://www.cnblogs.com/xuezhezlr/p/9096063.html的继续,如果没看上文建议自己看一下,对理 ...
- 如何让Qt程序在运行时获取UAC权限
在pro文件中加入以下语句: QMAKE_LFLAGS += /MANIFESTUAC:\"level=\'requireAdministrator\' uiAccess=\'false\' ...
- 关于最小生成树,拓扑排序、强连通分量、割点、2-SAT的一点笔记
关于最小生成树,拓扑排序.强连通分量.割点.2-SAT的一点笔记 前言:近期在复习这些东西,就xjb写一点吧.当然以前也写过,但这次偏重不太一样 MST 最小瓶颈路:u到v最大权值最小的路径.在最小生 ...
- selenium3 调用IE Unable to get browser
本地环境开发,移至服务器上出现Unable to get browser的问题.经过查找找到问题所在(第六点,需要修改注册表增加键): 1.下载IEDriverServer.进入索引页,首先选择版本号 ...
- 我的 FPGA 学习历程(01)—— FPGA 基础知识和 Quartus 的安装
高级的嵌入式市场主要分为以下三类:ARM.DSP 和 FPGA. 其中 ARM 是行业内的佼佼者,目前几乎所有的安卓智能手机都使用 ARM 授权的 CPU架构:而 DSP(数字信号处理器) 早年就被大 ...
- vue 路由跳转,传参
一.直接跳转 //js1.this.$router.push('/ad_new') //html 2.<router-link to="/ad_check"> < ...
- ES6 浏览器兼容性 和 Transpilation
浏览器兼容性 和 Transpilation 你的 web 浏览器可能每隔几个月就会提示你去更新,你知道为什么吗,主要是一些安全漏洞,新特性,以及支持新的 HTML.CSS 和 JavaScript ...