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 系列的更多相关文章

  1. [js高手之路]深入浅出webpack教程系列6-插件使用之html-webpack-plugin配置(下)

    上文我们对html-webpack-plugin的实例htmlWebpackPlugin进行了遍历分析,讲解了几个常用属性( inject, minify )以及自定义属性的添加,本文,我们继续深入他 ...

  2. [js高手之路]深入浅出webpack教程系列5-插件使用之html-webpack-plugin配置(中)

    上文我们讲到了options的配置和获取数据的方式,本文,我们继续深入options的配置 一.html-webpack-plugin插件中的options除了自己定义了一些基本配置外,我们是可以任意 ...

  3. [js高手之路]深入浅出webpack教程系列4-插件使用之html-webpack-plugin配置(上)

    还记得我们上文中的index.html文件吗? 那里面的script标签还是写死的index.bundle.js文件,那么怎么把他们变成动态的index.html文件,这个动态生成的index.htm ...

  4. [js高手之路]深入浅出webpack教程系列3-配置文件webpack.config.js详解(下)

    本文继续接着上文,继续写下webpack.config.js的其他配置用法. 一.把两个文件打包成一个,entry怎么配置? 在上文中的webpack.dev.config.js中,用数组配置entr ...

  5. [js高手之路]深入浅出webpack教程系列7-( babel-loader,css-loader,style-loader)的用法

    什么是loader呢,官方解释为文件的预处理器,通俗点说webpack在处理静态资源的时候,需要加载各种loader,比如,html文件,要用html-loader, css文件要用css-loade ...

  6. [js高手之路]深入浅出webpack教程系列9-打包图片(file-loader)用法

    我们还是接着上文继续,本文我们要讲的是图片资源的打包,图片在静态排版中,经常出现的两个位置是css通过background引入背景,还有一种就是在html模板文件中用img标签引入的方式,如果要在we ...

  7. [js高手之路]深入浅出webpack教程系列8-(postcss-loader,autoprefixer,html-loader,less-loader,ejs-loader)用法

    我们接着上文,那么在上篇文章的最后,写到了css-loader的用法,如果你用心发现,就能看到我在style.css样式文件中写了一个这样的样式: div { transition: all ease ...

  8. [js高手之路]深入浅出webpack教程系列1-安装与基本打包用法和命令参数

    [js高手之路]深入浅出webpack教程系列索引目录: [js高手之路]深入浅出webpack教程系列1-安装与基本打包用法和命令参数 [js高手之路]深入浅出webpack教程系列2-配置文件we ...

  9. [js高手之路]深入浅出webpack教程系列2-配置文件webpack.config.js详解(上)

    [js高手之路]深入浅出webpack教程系列索引目录: [js高手之路]深入浅出webpack教程系列1-安装与基本打包用法和命令参数 [js高手之路]深入浅出webpack教程系列2-配置文件we ...

随机推荐

  1. Unity Shader Learning

    Toon 表面没有均匀的阴影. 为了达到这个效果,我们需要一个斜坡图. 其目的是将朗伯光强度NdotL重新映射到另一个值. 使用没有渐变的渐变映射,我们可以强制照明逐步渲染.下图显示了如何使用斜坡图来 ...

  2. python: 列表的方法

    操作 函数 使用方法 备注 索引 index in: example.index(‘creative’) --- 1 in:example[1,] --- [’creative’, [’京东’,996 ...

  3. dotnetcore Http服务器研究(一)

    自从dotnet core 诞生以来,发展非常强势.我们总有些需要写一个独立的http服务器的需求,我想是时候忘记httplistener 了. dotnet framework 时代建一个小的htt ...

  4. 如何使用 tf object detection

    # 如何使用 tf object detection https://juejin.i m/entry/5a7976166fb9a06335319080 https://towardsdatascie ...

  5. [Ubuntu]pkg-config和ldconfig

    转载自->这里 我们知道,linux编译源码包基本步骤无非是:configure,make,make install三部曲:configure过程中可能会遇到无法找到某些头文件和动态库:原因有两 ...

  6. 谈谈Java的classpath

    Java之ClassPath 大家刚开始写Java代码的时候,如果使用Eclipse作为IDE,同时需要引用其他的类库,一般会有如下操作 在工程中新建lib目录 将jar包复制到lib目录下 右键单击 ...

  7. springmvc是如何工作的

    上图便是springmvc的工作流程,看着条条框框的,其实说的直白一点,springmvc就是负责处理用户的需求(request/url),它的负责人(核心组件)就是前端控制器(DispatcherS ...

  8. java中的异常(一)

    java异常的概念 执行期的错误(javac xxx.java) 运行期的错误(java xxx) 这里讲的是运行期出现的错误 class TestEx { public static void ma ...

  9. 神奇高效的Linux命令行

    一.为什么要学linux命令 Linux是由命令行组成的操作系统,精髓在命令行,无论图形界面发展到什么水平,命令行方式的操作永远是不会变的.Linux命令有许多强大的功能:从简单的磁盘操作.文件存取, ...

  10. java中bigInteger的应用

    BigInteger abs()  返回大整数的绝对值BigInteger add(BigInteger val) 返回两个大整数的和BigInteger and(BigInteger val)  返 ...