webpack整体了解
一、下载
新建一个文件夹,在cmd中npm init->npm install->npm install webpack --save-dev
下载完成之后,新建一个webpack.config.js文件,在这个里面写配置
开始准备:http://www.cnblogs.com/GainLoss/p/7198953.html
webpack踩坑:http://www.cnblogs.com/GainLoss/p/7473585.html
vue+webpack:http://www.cnblogs.com/GainLoss/p/6592729.html
http://www.cnblogs.com/GainLoss/p/6927626.html
二、基础
1.一个入口一个出口
2.多个入口多个出口
3.将第三方文件单独成一个文件夹
4.css文件 js文件 图片 压缩
三、功能
1.基本 一个入口一个出口 将ES6转成ES5
var path=require('path');
var HtmlWebpackPlugin=require('html-webpack-plugin')
module.exports={
entry:{
index:'index.js',
},
output:{
path:path.resolve(__dirname,'dist'),
filename:'[name].[hash].js',
},
resolve:{
extensions:['.js'],//js文件引入的时候可以不用加后缀
},
module:{
rules:[
{
test:/\.js$/,
exclude:/node_modules/,
loader:'babel-loader',
query:{
presets:['es2015']
}
},
]
},
plugins:[
new HtmlWebpackPlugin({
template:'./index.html'
}),
]
}
2.将css转成单独的文件
在cmd中下载 npm install style-loader css-loader --save-dev
...module
{
test:/\.css$/,
exclude:/node_modules/,
loader:ExtractTextPlugin.extract({ fallback: 'style-loader', use: 'css-loader' }), },
...plugin中
3.将代码中的图片转成base64
在 cmd中下载 npm install url-loader --save-dev
...module
{
test:/\.(png|jpg|gif)$/,
exclude:/node_modules/,
loader:'url-loader'
}
4.将第三方插件单独成文件
module.exports={
entry:{
index:'index.js',
vendor:['./web/jquery']
},
output:{
path:path.resolve(__dirname,'dist'),
filename:'[name].[hash].js',
},
resolve:{
extensions:['.js'],
},
module:{
rules:[
...
]
},
plugins:[
...new webpack.optimize.CommonsChunkPlugin({
name:['vendor','manifest']
}),
]
}
5.实现多个入口文件
...
function getfile(){//这里面需要获取全部符合的文件
var entry=[];
glob.sync(__dirname+'/web/*.js').forEach(function(file){
var name=file.split('main')[]
if(name){
var filename=file.split('main')[]+"main"+name;
entry.push(filename)
}
})
return entry
}
module.exports={
entry:{
index:getfile(),
vendor:['./web/jquery']
},
...
}
总的代码:
var path=require('path');
var HtmlWebpackPlugin=require('html-webpack-plugin')
var ExtractTextPlugin=require('extract-text-webpack-plugin')
var glob=require('glob')
var webpack=require('webpack')
var CleanWebpackplugin=require('clean-webpack-plugin')
function getfile(){
var entry=[];
glob.sync(__dirname+'/web/*.js').forEach(function(file){
var name=file.split('main')[]
if(name){
var filename=file.split('main')[]+"main"+name;
entry.push(filename)
}
})
return entry
}
module.exports={
entry:{
index:getfile(),
vendor:['./web/jquery']
},
output:{
path:path.resolve(__dirname,'dist'),
filename:'[name].[hash].js',
},
resolve:{
extensions:['.js'],
},
module:{
rules:[
{
test:/\.js$/,
exclude:/node_modules/,
loader:'babel-loader',
query:{
presets:['es2015']
}
},
{
test:/\.css$/,
exclude:/node_modules/,
loader:ExtractTextPlugin.extract({ fallback: 'style-loader', use: 'css-loader' }),
},
{
test:/\.(png|jpg|gif)$/,
exclude:/node_modules/,
loader:'url-loader'
}
]
},
plugins:[
new HtmlWebpackPlugin({
template:'./index.html'
}),
new ExtractTextPlugin('style.css'),
new webpack.optimize.CommonsChunkPlugin({
name:['vendor','manifest']
}),
new CleanWebpackplugin(
['dist/index.*.js'],
{
root:__dirname,
verbose:true,
dry:true
}
),
]
}
webpack整体了解的更多相关文章
- webpack整体配置结构
摘自<深入浅出webpack>2.8 const path = require('path'); module.exports = { // entry 表示入口,webpack执行的第一 ...
- 细说 webpack 之流程篇
摘自: http://taobaofed.org/blog/2016/09/09/webpack-flow/ 引言 目前,几乎所有业务的开发构建都会用到 webpack .的确,作为模块加载和打包神器 ...
- 细说webpack之流程篇
引言 目前,几乎所有业务的开发构建都会用到 webpack .的确,作为模块加载和打包神器,只需配置几个文件,加载各种 loader 就可以享受无痛流程化开发.但对于 webpack 这样一个复杂度较 ...
- webpack编译流程漫谈
前言 weback在web构建工具的激烈竞争中逐渐脱引而出. 无论是编译速度.报错提示.可扩展性等都给前端开发者耳目一新的感觉.本篇文章是个人对webpack的一点小研究总结. webpack在开发者 ...
- [转] webpack之plugin内部运行机制
简介 webpack作为当前最为流行的模块打包工具,几乎所有的主流前端开发框架(React.Vue等)都会将其作为默认的模块加载和打包工具.通过简单的配置项,使用各种相关的loader和plugin, ...
- Webpack Tapable原理详解
directory - src - sim ---- 简单的模拟实现 - /.js$/ ---- 使用 代码已上传github, 地址 Detailed Webpack 就像一条生产线, 要经过一系列 ...
- webpack介绍和使用
一webpack介绍1由来2介绍3作用4拓展说明5webpack整体认知二webpack安装1安装node2安装cnpm3安装nrm的两种方法4安装webpack三webpack配置0搭建项目结构1初 ...
- browserify学习总结
前言 在未接触browserify,虽然我知道它是一个前端构建工具,但还是有几个疑问: 1. browserify出现的日期? 2. 能构建哪些文件? 3. 附加的browserify代码体积是多大? ...
- happypack 原理解析
说起 happypack 可能很多同学还比较陌生,其实 happypack 是 webpack 的一个插件,目的是通过多进程模型,来加速代码构建,目前我们的线上服务器已经上线这个插件功能,并做了一定适 ...
随机推荐
- day26 网络通讯的整个流程
一.网络通信原理 1. 互联网的本质就是一系列的网络协议 2. 互联网协议按照功能不同分为osi七层或tcp/ip五层或tcp/ip四层 各层的功能简述: [1]物理层:主要定义物理设备标准,如网 ...
- linux的shell脚本
一.遇到的问题: 1.在Documents/shell_Document的文件夹下创建第一个脚本. 但是发现在图形化界面不能执行shell脚本.只能到命令行模式下才能执行.感觉太麻烦,我的虚拟机从图形 ...
- mysql5.7导出到csv
版本:mysql5.7 SELECT * FROM table_name where xxx into outfile 'C:/ProgramData/MySQL/MySQL Server 5.7/U ...
- 数据结构---Java---LinkedList
public class LinkedList<E> extends AbstractSequentialList<E> implements List<E>, D ...
- Vim Plugins for Linux
Usage 1.Set up Vundle: git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vi ...
- 牛客网Java刷题知识点之Java 集合框架的构成、集合框架中的迭代器Iterator、集合框架中的集合接口Collection(List和Set)、集合框架中的Map集合
不多说,直接上干货! 集合框架中包含了大量集合接口.这些接口的实现类和操作它们的算法. 集合容器因为内部的数据结构不同,有多种具体容器. 不断的向上抽取,就形成了集合框架. Map是一次添加一对元素. ...
- 在cms以及kindeditor中插入百度动态地图的方法
想在网页中插入动态地图不难,直接打开网址http://api.map.baidu.com/lbsapi/creatmap/,然后按照提示操作,最终生成脚本,放到html文件中即可.而在kindedit ...
- vue学习中遇到的onchange、push、splice、forEach方法使用
最近在做vue的练习,发现有些js中的基础知识掌握的不牢,记录一下: 1.onchange事件:是在域的内容改变时发生,单选框与复选框改变后触发的事件. 2.push方法:向数组的末尾添加一个或多个元 ...
- window.open方法解析
一.前言 最近在项目中需要新窗口打开一个第三方的页面,大家都知道,使用window.open打开新窗口某些情况下会被浏览器的屏蔽程序阻止.如果要打开的URL是通过AJAX获取的,就一定会被浏览器拦截. ...
- windows远程连接Mac、Mac远程连接Mac、Mac连接Windows
最近因为要进行学习交流,需要用到远程连接,所以找了三种不同的方式,记录如下 1.Windows远程连接Mac 1.mac os x电脑设置 系统偏好设置-共享-勾选“远端管理”,然后在电脑设置—VNC ...