Webpack的使用

webpack 2,3版本的网站 : https://webpack.js.org/

什么是WebPack,为什么要使用它?

WebPack可以看做是模块打包机:它做的事情是,分析你的项目结构,找到JavaScript模块以及其它的一些浏览器不能直接运行的拓展语言(Scss,TypeScript等),并将其打包为合适的格式以供浏览器使用。

WebPack和Grunt以及Gulp相比有什么特性

其实Webpack和另外两个并没有太多的可比性,Gulp/Grunt是一种能够优化前端的开发流程的工具,而WebPack是一种模块化的解决方案,不过Webpack的优点使得Webpack可以替代Gulp/Grunt类的工具。

Grunt和Gulp的工作方式是:在一个配置文件中,指明对某些文件进行类似编译,组合,压缩等任务的具体步骤,这个工具之后可以自动替你完成这些任务。


Webpack的工作方式是:把你的项目当做一个整体,通过一个给定的主文件(如:index.js),Webpack将从这个文件开始找到你的项目的所有依赖文件,使用loaders处理它们,最后打包为一个浏览器可识别的JavaScript文件。


如果实在要把二者进行比较,Webpack的处理速度更快更直接,能打包更多不同类型的文件。


开始使用Webpack

1.安装

在安装 Webpack 前,你本地环境需要支持node.js


全局安装 npm install -g webpack

安装到项目目录 npm install --save-dev webpack



2.开始 

1.在终端中使用npm init命令可以自动创建这个package.json文件

2.安装到项目目录 npm install --save-dev webpack

3.创建两个文件夹,app文件夹和public文件夹,app文件夹用来存放原始数据和我们将写的JavaScript模块,public文件夹用来存放准备给浏览器读取的数据(包括使用webpack生成的打包后的js文件以及一个index.html文件)。在这里还需要创建三个文件,index.html 文件放在public文件夹中,两个js文件(Greeter.js和main.js)放在app文件夹中,此时项目结构如下图所示


index.html文件只有最基础的html代码,它唯一的目的就是加载打包后的js文件(bundle.js)


Greeter.js只包括一个用来返回包含问候信息的html元素的函数。

main.js用来把Greeter模块返回的节点插入页面。


正式使用Webpack

webpack可以在终端中使用,其最基础的命令是

webpack 入口文件(例如 main.js)  出口文件(例 bundle.js)

结果如下




通过配置文件来使用Webpack(另外一种方式)

Webpack拥有很多其它的比较高级的功能(比如说本文后面会介绍的loaders和plugins),这些功能其实都可以通过命令行模式实现,但是正如已经提到的,这样不太方便且容易出错的,一个更好的办法是定义一个配置文件,这个配置文件其实也是一个简单的JavaScript模块,可以把所有的与构建相关的信息放在里面。

还是继续上面的例子来说明如何写这个配置文件,在当前练习文件夹的根目录下新建一个名为webpack.config.js (文件名是固定的)的文件,并在其中进行最最简单的配置,如下所示,它包含入口文件路径和存放打包后文件的地方的路径。

新建 webpack.config.js 配置文件

module.exports={

entry:"./src/main.js",//打包的入口

output:{

path:path.join(__dirname,'./dist/'),  //path必须是绝对路径,用来配置资源打包的出口目录

filename:"bundle.js",

//在打包结果中,webpack默认将内容的资源应用路径是相对于bundle.js文件,就是

//注:这里用到的path.join()指令是node的方法,使用的话需要var path=require('path'),先 引入 才可以使用

}

}

现在如果你需要打包文件只需要在终端里你运行webpack(非全局安装需使用node_modules/.bin/webpack)命令就可以了,这条命令会自动参考webpack.config.js文件中的配置选项打包你的项目,输出结果如下


又学会了一种使用Webpack的方法,而且不用管那烦人的命令行参数了,有没有感觉很爽。有没有想过如果可以连webpack(非全局安装需使用node_modules/.bin/webpack)这条命令都可以不用,那种感觉会不会更爽~,继续看下文。

更快捷的执行打包任务

执行类似于node_modules/.bin/webpack这样的命令其实是比较烦人且容易出错的,不过值得庆幸的是npm可以引导任务执行,对其进行配置后可以使用简单的npm start命令来代替这些繁琐的命令。在package.json中对npm的脚本部分进行相关设置即可,设置方法如下。

{

"name": "webpack-sample-project",

"version": "1.0.0",

"description": "Sample webpack project",

"scripts": {

"build": "webpack" //配置的地方就是这里啦,运行指令可以直接写npm run build

},

"author": "zhang",

"license": "ISC",

"devDependencies": {

"webpack": "^1.12.9"

}

}


加载css步骤

文档  https://webpack.js.org/guides/asset-management/#loading-css

1. npm install --save-dev style-loader css-loader

2.webpack.config.js

module: {

rules: [

{

test: /\.css$/,  //正则匹配css文件解析

use: [

'style-loader',

'css-loader'  //注意:这里必须style在前 ,css在后

]

}

]

}

};

Loading Images 图片加载

文档  https://webpack.js.org/guides/asset-management/#loading-images

1、加载

npm install --save-dev file-loader

2.配置 webpack.config.js

{

test: /\.(png|svg|jpg|gif)$/,

use: [

'file-loader'

]

}

Webpack Sample Project




作者:zhangwang

链接:http://www.jianshu.com/p/42e11515c10f

來源:简书

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 版权声明:本文为博主原创文章,未经博主允许不得转载。 webpack介绍和使用 一、webpack介绍 1、由来 ...
    it筱竹阅读 11,231评论 0 21
  • 无意中看到zhangwnag大佬分享的webpack教程感觉受益匪浅,特此分享以备自己日后查看,也希望更多的人看到...
    小小字符阅读 8,226评论 7 35
  • GitChat技术杂谈 前言 本文较长,为了节省你的阅读时间,在文前列写作思路如下: 什么是 webpack,它要...
    萧玄辞阅读 12,710评论 7 110
  • 最近在学习 Webpack,网上大多数入门教程都是基于 Webpack 1.x 版本的,我学习 Webpack 的...
    My_Oh_My阅读 8,202评论 40 247
  • 作为一个懒癌晚期无可救药的人,心底里突然冒出的那丢丢上进心,促使着我写了这第一篇。从三月到九月正好满半年,我恐怕已...
    徐月琴阅读 114评论 0 0