上一片博文主要让大家了解下究竟webpack是干什么的,明显它是专注于打包的。


gulp  和  webpack  的区别

gulp,要求我们一步步写task(es6编译、css压缩、图片压缩、打包...),全过程都是我们掌控的(一开始项目小的时候,我们觉得灵活,但是后来项目复杂度上来了,我们觉得这样写task也太恶心了)。

webpack,只要写好配置文件,就会帮我们处理好各种零散的html、css、js(这里包括它们的预编译语言例如jade、sass、es6、typescript等),然后打包成一个js文件。

gulp和webpack最明显的区别就是webpack自动化程度更高,不用自己写各种各样的稀奇古怪的task。


使用:

1.安装

webpack和gulp一样都要先全局安装一次,再在项目安装一次:

npm i webpack -g
npm i webpack -D

ps:全局安装是为了能获取本地模块

2.配置文件

默认配置文件名:webpack.config.js

如果想用其他名字例如:1.config 调用webpack时请用 webpack --config 1.config

//webpack.config.js
const path = require('path');
//一个入口对一个最终打包的js
//单入口写法
module.exports = {
entry: './src/script/main.js',
output: {
path: path.solve('./dist'),
filename: 'bundle.js'
}
}
-----------------------------------------------------------------------------------------------------
//多个平行依赖入口写法,最终会打包在一起
module.exports = {
entry: ['./src/script/main.js','./src/script/main2.js','./src/script/main3.js'],
output: {
path: path.solve('./dist'),
filename: 'js/bundle.js'
}
}
-----------------------------------------------------------------------------------------------------
//多入口写法,最终会打包多个文件
//[name] 这里是page1 page2
//[hash] 这个每次打包生成的一个hash(签名)值
//[chunkhash] 这个是每个打包文件的md5 hash
module.exports = {
entry: {
page1 :'./src/script/main.js',
page2 :'./src/script/main2.js'
},
output: {
path: path.solve('./dist'),
filename: 'js/[name]-[chunkhash].js'
}
}

3.生成index.html(自动插入打包好的js文件)

之前的文件都不能自动将打包文件放入index.html中,所以我们要借助新的插件html-webpack-plugin(需安装)

//webpack.config.js
const path = require('path');
const htmlWebpackPlugin = require('html-webpack-plugin');
module.exports = {
entry: {
a:'./src/script/main.js',
b:'./src/script/main2.js'
},
output: {
path: path.solve('./dist'),
filename: 'js/bundle.js'
},
plugins:[
new htmlWebpackPlugin({
template: 'index.html', //以当前目录下的index.html为模板
filename: 'index-[hash].html',
inject: 'head',//默认时body
hahaha: '自定义属性的自定义内容' ,//这个内容可以在模板上用ejs语法调用,例如<%=htmlWebpackPlugin.options.hahaha%>
minify: { //压缩html
removeCommet: true, //去注释
collapseWhitespace: true //去空格
},
chunks:[a], //要入口js a
excludeChunks:[b] //不要入口js b chunks和excludeChunks随便写一个就行
})
]
}

webpack进阶--打包的更多相关文章

  1. webpack进阶构建项目(一)

    webpack进阶构建项目(一) 阅读目录 1.理解webpack加载器 2.html-webpack-plugin学习 3.压缩js与css 4.理解less-loader加载器的使用 5.理解ba ...

  2. webpack快速入门——实战技巧:watch的正确使用方法,webpack自动打包

    随着项目大了,后端与前端联调,我们不需要每一次都去打包,这样特别麻烦,我们希望的场景是,每次按保存键,webpack自动为我们打包,这个工具就是watch! 因为watch是webpack自带的插件, ...

  3. webpack进阶用法你都get到了么?

    如何消除无用代码:打包自己的私有js库:实现代码分割和动态import提升初次加载速度:配置eslint规范团队代码规范:打包异常抓捕你都get到了么? 摇树优化:Tree Shaking webpa ...

  4. webpack独立打包与缓存处理

    关于 微信公众号:前端呼啦圈(Love-FED) 我的博客:劳卜的博客 知乎专栏:前端呼啦圈 前言 先前写了一篇webpack入门的文章<webpack入门必知必会>,简单介绍了webpa ...

  5. express整合webpack的打包文件dist

    对于我来说,第一次接触前后端整合问题的小白,刚开始是一脸懵逼,这个问题整整坑了我一个晚上加一个早上,现在写出来总结: 前端开发:vue-cli+webpack: 后台开发:nodejs框架expres ...

  6. webpack 基本打包方法

    webpack的打包基本配置文件webpack.config.js 可以在webpack.config.js里面写好配置:比如前章节所总结的四大核心 |-- add.js // 定义一个普通加法函数 ...

  7. webpack 单独打包指定JS文件(CopyWebpackPlugin)

    背景: 不确定打出的前端包所访问的后端IP,需要对项目中IP配置文件单独拿出来,方便运维部署的时候对IP做修改.因此,需要用webpack单独打包指定文件.npm install --save-dev ...

  8. webpack项目打包配置

    webpack.config.js 文件中,其中“plugins”最为重要 var path = require("path"); const webpack = require( ...

  9. webpack 安装,打包使用

      Webpack 本身只能处理 JavaScript 模块,如果要处理其他类型的文件,就需要使用 loader 进行转换. 全局安装webpack 打开文件夹amd输入指令  npm i webpa ...

随机推荐

  1. Keras实现风格迁移

    风格迁移 风格迁移算法经历多次定义和更新,现在应用在许多智能手机APP上. 风格迁移在保留目标图片内容的基础上,将图片风格引用在目标图片上. 风格本质上是指在各种空间尺度上图像中的纹理,颜色和视觉图案 ...

  2. Ubuntu中程序部署时无法加载动态库的解决方法

    Ubuntu下修改环境变量的三种方法 添加环境变量无法解决,可尝试如下操作: sudo vim /etc/ld.so.conf 在ld.so.conf中加入动态库的目录... 然后 sudo ldco ...

  3. linux 升级 5.0.2内核

    1.下载 wet https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.0.2.tar.xz -o /usr/src/ cd /usr/src ta ...

  4. Selenium-Switch与SelectApi接口详解

    Switch 我们在UI自动化测试时,总会出现新建一个tab页面.弹出一个浏览器级别的弹框或者是出现一个iframe标签,这时我们用WebDriver提供的Api接口就无法处理这些情况了.需要用到Se ...

  5. web网站的并发量级别

    web网站的并发量级别 评价一个网站的“大小”,处于视角的不同,有很多种衡量的方法,类似文章数,页面数之类的数据非常明显,也没有什么可以争议的.但对于并发来说,争议非常之多,这里就从一个技术的角度开始 ...

  6. stl源码剖析 详细学习笔记 set map

    // //  set map.cpp //  笔记 // //  Created by fam on 15/3/23. // // //---------------------------15/03 ...

  7. 机器学习初入门01-numpy的基础用法

    一.numpy基础结构 1. numpy.genformtxt('路径名', delimiter = '分割符', dytype = 读取方式如str ):读取一个文件,返回一个numpy.ndarr ...

  8. python爬虫-使用cookie登录

    前言: 什么是cookie? Cookie,指某些网站为了辨别用户身份.进行session跟踪而储存在用户本地终端上的数据(通常经过加密). 比如说有些网站需要登录后才能访问某个页面,在登录之前,你想 ...

  9. Final阶段基于NABCD评论作品

    组名:杨老师粉丝群 组长:乔静玉 组员:吴奕瑶  刘佳瑞  公冶令鑫  杨磊  刘欣  张宇  卢帝同 一.拉格朗日2018--<飞词> 1.1  NABCD分析 N(Need,需求):该 ...

  10. maybe i have no answer

    怎么说呢,我从小学开始到高中,大学.我觉得老师对大家都是一样的,虽然我因为父母的原因可能和老师接触比较多,但是学业上其实没什么帮助的. 我更希望老师能给我人生道路上的指点,虽然自己的道路确实是自己走出 ...