安装 webpack 搞定 Vue 打包_vue install webpack
作者:Lefex
转发链接:
https://mp.weixin.qq.com/s/nCjUZgQMzOSHZ2Z05LuvqA
前言
webpack 是一个通过 node.js 实现的工具,本节内容核心掌握 webpack 的安装和使用,并掌握如何通过 webpack 打包 vue 项目。通过 npm 安装步骤:
1、创建一个文件夹 day1,然后在这个文件夹下执行 npm init,目的是生成一个 package.json 文件;
2、通过 npm install -D webpack 或者:npm install --save-dev webpack 安装 webpack,-D 和 --sava-dev 等价。写本课程时使用的 webpack 版本是 4.43.0,大于等于 V4 版本需要安装 webpack-cli,执行命令 npm install --save-dev webpack-cli。
安装完成后,package.json 内容如下:
安装完 webpack 之后,我们通过 webpack 打包 vue 实例来学习 webpack 打包配置。
第一步:创建该有的文件
在 day1 这个文件夹下创建文件,最终目录结构如下,home 是采用 vue 实现的一个页面,:
index.html:html 模板文件,红框内,div 为 Vue 实例要使用的元素节点,script 标签中 ../dist/day1.js 文件是打包后的文件。
index.vue 相当于一个 vue 组件。
index.js,创建 Vue 实例的文件,将作为 Home 页面的入口文件。
第二步、配置 webpack
在打包之前需要先建一个 webpack.config.js 文件,这个文件用来告诉 webpack 该如何打包,包含了具体打包配置信息。
1、mode · 线下还是线上模式
打包模式,支持 development(开发模式,方便调试) 和 production(线上模式,会做各种优化处理,比如文件压缩)。
2、entry · 总要告诉我先从哪个文件开始吧
打包的入口,打包的时候要告诉 webpack 从哪个文件开始打包,例子中打包入口文件为 home/index.js,可支持多个入口,如下图:
3、output · 包打好了,要放到哪里
与打包结果相关的配置,filename 指定打包后文件名,path 指定打包结果保存的路径;
4、module · 一切文件皆模块
告诉 webpack 遇到各种文件要如何处理,比如遇到 vue 文件要交给 vue-loader 来处理,遇到 css 文件要交给 css-loader 来处理,总之不同文件要找能够处理它的工具来处理。
module 主配置 loader,loader 用来处理不同的文件,比如 less 文件可以 less-loader 转换成 css 文件。我们来看一下,一个 loader 其实就是一个函数:
5、plugins · 来点特殊的服务
plugin 也就插件,主要用来扩展 webpack 的功能,构建期间可监听 webpack 在编译期间产生的事件。plugin 其实就是一个类,需要实现一个 apply 函数,webpack 在使用插件的时候会调用插件实现的 apply 方法。
介绍完 webpack 配置文件中的基本概念后,我们看看 webpack.config.js 具体配置信息:
// path 为 node 提供的模块,可直接使用
const path = require('path');
// vue-loader was used without the corresponding plugin.
// Make sure to include VueLoaderPlugin in your webpack config.
// 使用 vue-loader 是官方要求必须要使用 VueLoaderPlugin 这个插件
// 引入时只能叫 VueLoaderPlugin 这个名字
const VueLoaderPlugin = require('vue-loader/lib/plugin');
// webpack 的配置其实就是一个对象
module.exports = {
// 设置打包方式,支持 development 和 production
mode: 'development',
// 打包入口文件
entry: './home/index.js',
// 最终打包结果配置
output: {
filename: 'day1.js',
path: path.resolve(__dirname, './dist')
},
// 配置 loader,不同文件应用不同的 loader
module: {
rules: [
{
// vue 文件采用 vue-loader 来处理
test: /\.vue$/,
use: ['vue-loader']
},
{
// css 文件,先采用 css-loader 处理,
// 再使用 style-loader 处理,注意顺序
test: /\.css$/,
use: ['style-loader', 'css-loader']
}
]
},
plugins: [
// vue-loader 目前需要 VueLoaderPlugin,不然会报错
// 直接创建了 VueLoaderPlugin 实例
new VueLoaderPlugin()
]
}
第三步、打包命令配置
通过
./node_modules/webpack/bin/webpack.js --config webpack.config.js 这条命令来进行打包,除了使用 --config 配置参数外,还可以通过 --help 查看其它命令参数:
为了避免每次都要写
./node_modules/webpack/bin/webpack.js --config webpack.config.js 这么一长串的命令,可以使用 npm scripts 来简化操作,修改 package.json 中的 scripts 属性,添加 build,执行命令npm run bulid 即可进行打包:
"scripts": {
"build": "npx webpack --config webpack.config.js"
}
其实连 npx 都可以省略:
"scripts": {
"build": "webpack --config webpack.config.js"
}
更过分的是可以这样写(--config 不建议省略):
"scripts": {
"build": "webpack"
}
第四步:跑起来
执行 npm run build,将在根目录下生成一个 dist/day1.js 文件,也就是打包后的文件。
在浏览器里打开 index.html 文件:
本节完,诚挚邀请你来思考下面的问题并打卡:1、本节内容只有一个 html 页面,如果项目里有多个 html 页面,该如何配置 webpack;
2、在 index.html 文件中,我写了
3、本节内容中你学到了什么,要没有需要改进的地方;
代码入口:
https://github.com/lefex/FE/tree/master/webpack/day1
大家加油,贵在坚持!
推荐JavaScript学习相关文章
《Node.js 实现抢票小工具&短信通知提醒(上)「干货」》
《Node.js 实现抢票小工具&短信通知提醒(下)「干货」》
《学习 jQuery 源码整体架构,打造属于自己的 js 类库》
《Angular v10.0.0 正式发布,不再支持 IE9/10》
《「实践」浏览器中的画中画(Picture-in-Picture)模式及其 API》
《「多图」一文带你彻底搞懂 Web Workers (上)》
《「多图」一文带你彻底搞懂 Web Workers (中)》
《webpack4主流程源码解说以及动手实现一个简单的webpack(上)》
《webpack4主流程源码解说以及动手实现一个简单的webpack(下)》
《前后端全部用 JS 开发是什么体验(Hybrid + Egg.js经验分享)上》
《前后端全部用 JS 开发是什么体验(Hybrid + Egg.js经验分享)中》
《前后端全部用 JS 开发是什么体验(Hybrid + Egg.js经验分享)下》
《一文带你搞懂 babel-plugin-import 插件(上)「源码解析」》
《一文带你搞懂 babel-plugin-import 插件(下)「源码解析」》
《教你如何使用内联框架元素 IFrames 的沙箱属性提高安全性?》
《细说DOM API中append和appendChild的三个不同点》
《NodeX Component - 滴滴集团 Node.js 生态组件体系「实践」》
《浅谈浏览器架构、单线程js、事件循环、消息队列、宏任务和微任务》
《了不起的 Webpack HMR 学习指南(上)「含源码讲解」》
《了不起的 Webpack HMR 学习指南(下)「含源码讲解」》
《图解 Promise 实现原理(二):Promise 链式调用》
《图解 Promise 实现原理(三):Promise 原型方法实现》
《图解 Promise 实现原理(四):Promise 静态方法实现》
《使用Service Worker让你的 Web 应用如虎添翼(上)「干货」》
《使用Service Worker让你的 Web 应用如虎添翼(中)「干货」》
《使用Service Worker让你的 Web 应用如虎添翼(下)「干货」》
《一个轻量级 JavaScript 全文搜索库,轻松实现站内离线搜索》
《细品269个JavaScript小函数,让你少加班熬夜(一)「值得收藏」》
《细品269个JavaScript小函数,让你少加班熬夜(二)「值得收藏」》
《细品269个JavaScript小函数,让你少加班熬夜(三)「值得收藏」》
《细品269个JavaScript小函数,让你少加班熬夜(四)「值得收藏」》
《细品269个JavaScript小函数,让你少加班熬夜(五)「值得收藏」》
《细品269个JavaScript小函数,让你少加班熬夜(六)「值得收藏」》
《手把手教你7个有趣的JavaScript 项目-上「附源码」》
《手把手教你7个有趣的JavaScript 项目-下「附源码」》
《JavaScript 使用 mediaDevices API 访问摄像头自拍》
《一文彻底搞懂JavaScript 中Object.freeze与Object.seal的用法》
《可视化的 JS:动态图演示 - 事件循环 Event Loop的过程》
《可视化的 js:动态图演示 Promises & Async/Await 的过程》
《Pug 3.0.0正式发布,不再支持 Node.js 6/8》
《通过发布/订阅的设计模式搞懂 Node.js 核心模块 Events》
《「速围」Node.js V14.3.0 发布支持顶级 Await 和 REPL 增强功能》
《JavaScript 已进入第三个时代,未来将何去何从?》
《前端上传前预览文件 image、text、json、video、audio「实践」》
《深入细品 EventLoop 和浏览器渲染、帧动画、空闲回调的关系》
《推荐13个有用的JavaScript数组技巧「值得收藏」》
《36个工作中常用的JavaScript函数片段「值得收藏」》
《一文了解文件上传全过程(1.8w字深度解析)「前端进阶必备」》
《手把手教你如何编写一个前端图片压缩、方向纠正、预览、上传插件》
《JavaScript正则深入以及10个非常有意思的正则实战》
《前端开发规范:命名规范、html规范、css规范、js规范》
《100个原生JavaScript代码片段知识点详细汇总【实践】》
《手把手教你深入巩固JavaScript知识体系【思维导图】》
《一个合格的中级前端工程师需要掌握的 28 个 JavaScript 技巧》
《身份证号码的正则表达式及验证详解(JavaScript,Regex)》
《127个常用的JS代码片段,每段代码花30秒就能看懂-【上】》
《深入浅出讲解JS中this/apply/call/bind巧妙用法【实践】》
《干货满满!如何优雅简洁地实现时钟翻牌器(支持JS/Vue/React)》
《面试中教你绕过关于 JavaScript 作用域的 5 个坑》
作者:Lefex
转发链接:
https://mp.weixin.qq.com/s/nCjUZgQMzOSHZ2Z05LuvqA