一、理解webpack

什么是webpack?

  是一个模块打包器。它的主要目标是将 JavaScript 文件打包在一起,打包后的文件用于在浏览器中使用,但它也能够胜任转换(transform)、打包(bundle)或包裹(package)任何资源(resource or asset)。"

二、前期准备

1.安装

  npm install --savd-dev webpack //下载

  npm init -y //初始化 下载package.json 保证node是最新的

  新建一个webpack.config.js文件,这里面放置的就是怎样实现打包的代码

2.我们可以更改运行webpack的命令

  在package.json中有个scripts中添加 "build":"webpack" 那么执行webpack的话 就可以用 npm run build

3.webpack中各个文件的作用

  package.json的作用是对webpack进行初始化

  webpack.config.js是对文件夹中的文件进行操作,里面都是需要对哪些文件进行什么样子的操作

以上基本的操作完成了

三、简单实现

module.exports={
entry:{//入口文件
index:'./index.js',
vendor:['./web/jquery']
},
output:{//出口文件
path:path.resolve(__dirname,'dist'),
filename:'[name].[hash].js',//设置一个带hash的文件
},
module:{
rules:[
{//es6转es5
test:/\.js$/,
exclude:/node_modules/,
loader:'babel-loader',
query:{
presets:['es2015']
}
},
]
},
//热更新
devServer: {
inline: true,
port: 8099
},
plugins:[
new webpack.HotModuleReplacementPlugin(),//热更新
]
}

我们可以看一下,最基本的就是需要

entry:入口文件;output:出口文件;module里面放的是下载的模块和对哪些文件进行操作;plugins是引入插件

四、在项目中需要实现的功能

1、将ES6转为ES5、sass/less转成css

  这种的话就是在module中的rules中执行特定的文件,并且使用对应的模块

2、多个入口多个出口

  多个入口,我们需要的是使用golb设置一个全部的文件;

  多个出口

path:path.resolve(__dirname,'dist'),
filename:'[name].[hash].js',//设置一个带hash的文件

3、将css文件单独打包、js文件单独打包、引入的第三方js文件单独打包、图片转为base64

(1)css单独打包成一个文件,我们需要用到一个插件:extract-text-webpack-plugin 然后再代码中这样:

module中rules

{//css
test:/\.css$/,
exclude:/node_modules/,
loader:ExtractTextPlugin.extract({ fallback: 'style-loader', use: 'css-loader' }),
//loader:ExtractTextPlugin.extract('style-loader','css-loader!postcss-loader'), },

plugins

new ExtractTextPlugin('style.css'),//将css单独生成 

(2)第三方js文件(比如jquery)

入口文件

entry:{//入口文件
index:getfile(),
vendor:['./web/jquery']
},
// plugins中
new webpack.optimize.CommonsChunkPlugin({//第三方插件
name:['vendor','manifest']
}),

4、热更新

热更新的意思是,当我们修改代码的时候,保存文件之后,webpack自动进行打包

在module.export中添加

//热更新
devServer: {
inline: true,
port: 8099
},

plugins

new webpack.HotModuleReplacementPlugin(),//热更新

代码:https://github.com/GainLoss/My-Webpack.git

=============================================

注意:

(1)在执行webpack-dev-server --open的时候,出现找不到webpack-dev-server

解决就是安装的时候用npm install webpack-dev-server -g这个命令安装 参考https://stackoverflow.com/questions/31611527/webpack-webpack-dev-server-command-not-found

要打开webpack-dev-server的时候命令必须是webpack-dev-server --open

(2)理解一下module中rules和plugins的区别:

module中rules是在打包构建过程中处理源文件,一次处理一个;

plugins是对整个构建过程进行处理

webpack了解的更多相关文章

  1. js学习笔记:webpack基础入门(一)

    之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...

  2. webpack之傻瓜式教程

    接触webpack也有挺长一段时间了,公司的项目也是一直用着webpack在打包处理,但前几天在教新人的情况下,遇到了一个问题,那就是:尽管网上的webpack教程满天飞,但是却很难找到一个能让新人快 ...

  3. 细说前端自动化打包工具--webpack

    背景 记得2004年的时候,互联网开发就是做网页,那时也没有前端和后端的区分,有时一个网站就是一些纯静态的html,通过链接组织在一起.用过Dreamweaver的都知道,做网页就像用word编辑文档 ...

  4. Webstorm+Webpack+echarts构建个性化定制的数据可视化图表&&两个echarts详细教程(柱状图,南丁格尔图)

    Webstorm+Webpack+echarts   ECharts 特性介绍 ECharts,一个纯 Javascript 的图表库,可以流畅的运行在 PC 和移动设备上,兼容当前绝大部分浏览器(I ...

  5. 使用webstorm+webpack构建简单入门级“HelloWorld”的应用&&引用jquery来实现alert

    使用webstorm+webpack构建简单入门级"HelloWorld"的应用&&构建使用jquery来实现 1.首先你自己把webstorm安装完成. 请参考这 ...

  6. webpack入门教程之Hello webpack(一)

    webpack入门教程系列为官网Tutorials的个人译文,旨在给予想要学习webpack的小伙伴一个另外的途径.如有不当之处,请大家指出. 看完入门教程系列后,你将会学习到如下内容: 1.如何安装 ...

  7. webpack的使用

    1.webpack是什么? 打包前端项目的工具(为项目提高逼格的东西). 2.webpack的基本命令 webpack#最基本的启动webpack命令 webpack-w #提供watch方法,实时进 ...

  8. Webpack 配置摘要

    open-browser-webpack-plugin 自动打开浏览器 html-webpack-plugin 通过 JS 生成 HTML webpack.optimize.UglifyJsPlugi ...

  9. Vue + Webpack + Vue-loader 系列教程(2)相关配置篇

    原文地址:https://lvyongbo.gitbooks.io/vue-loader/content/ 使用预处理器 在 Webpack 中,所有的预处理器需要和一个相应的加载器一同使用.vue- ...

  10. Vue + Webpack + Vue-loader 系列教程(1)功能介绍篇

    原文地址:https://lvyongbo.gitbooks.io/vue-loader/content/ Vue-loader 是什么? vue-loader 是一个加载器,能把如下格式的 Vue ...

随机推荐

  1. 2016计蒜之道初赛第四场A

    在每年的淘宝“双十一”时,访问量都会暴涨,服务器的请求会被流量分配程序按照一定策略,分发给不同的进程去处理.有一类请求,有两个进程可以接受分发的请求,其中一个进程所在服务器的配置.网络传输性能等都要优 ...

  2. pm2 启动后台 node js

    1,安装node js 参看:https://www.cnblogs.com/wf-l5201314/p/9229974.html 2,pm2安装(安装环境linux / os) 命令:npm ins ...

  3. spark 2.X 疑难问题汇总

    当前spark任务都是运行在yarn上,所以不用启动长进程worker,也没有master的HA问题,所以主要的问题在任务执行层面. 作业故障分类故障主要分为版本,内存和权限三方面. - 各种版本不一 ...

  4. SQL Server 清理日志

    USE[master] GO ALTER DATABASE 要清理的数据库名称 SET RECOVERY SIMPLE WITH NO_WAIT GO ALTER DATABASE 要清理的数据库名称 ...

  5. 创建Banner

    org.springframework.boot.SpringApplicationBannerPrinter#print(org.springframework.core.env.Environme ...

  6. c语言中有关0和1的运算问题

    /*有关0和1 的总结 最近做题总是混淆0 和 1 对于/ 和 %运算时候的结果怎么算 所以就上机试验了一番 结论: c语言中,0/任何数都为0 0%任何数都为0 1/任何数都为0 1%任何数都余1 ...

  7. mysql查询过去12个月的数据统计

    SELECT DATE_FORMAT( FROM_UNIXTIME( t.`created_at`, '%Y-%m-%d %H:%i:%S' ), '%Y-%m' ) MONTH, count(t.c ...

  8. linux下pid命令

    ps aux | grep tomcat|  awk '{if(NR==1)print $2}' Linux:批量修改分隔符(awk.BEGIN.FS.OFS.print.tr命令) 批量修改文件的分 ...

  9. 案例54-crm练习新增联系人

    1 前台页面部分 1 linkman/add.jsp <%@ page language="java" contentType="text/html; charse ...

  10. Linux下的NFS快速配置教程与安全策略

    [51CTO专稿]在Linux下实现文件共享有多种方式,NFS就是其中之一.网络文件系统(NFS)协议是由Sun MicroSystem在20世纪80年代为了提供对共享文件的远程访问而设计和实现的.该 ...