初识webpack

webpack是帮助我们管理复杂项目的工具。

学习webpack会极大扩充前端开发视野。

webpack可以实现:

Tree shaking

懒加载

代码分割

webpack4速度更快,大型项目甚至可以节约90%构建时间。

内置了更多的默认配置,变更了许多API。

Loader

HMR

Create React App

Caching

Plugin

SourceMap

Vue cli 3.0

Shimming

WebpackDevServer

TreeShaking

CodeSplitting

babel

React

Library

Eslint

PWA

Vue

Mode

性能优化

多页应用

原理

PreLoading

PreFetching

环境变量

TypeScript

在项目内安装webpack

npm init -y:自动生成默认配置项package.json,不用一步一步选择

不推荐在全局安装,因为可能出现两个项目用的webpack版本不一样的情况

安装:npm install webpack webpack-cli -D(或者 --save-dev)

查看版本号:npx webpack -v :npx会帮你在当前项目的node_modules里找webpack

查看webpack所有历史版本:npm info webpack

指定版本号安装:npm install webpack@4.25.1 webpack-cli -D

打包项目:npx webpack index.js

如果后续创建了webpack.config.js配置文件之后,就可以直接运行npx webpack了。

在当前项目目录下创建:webpack.config.js:配置文件

用commonJS语法,module.exports导出,

下面的entry是简写,实际上是:

entry: {

main: './index.js'

}

// 引入node的核心模块
const path = require('path')
module.exports = {
// 入口文件,从index.js打包
entry: './index.js',
// 打包生成的文件放到dist文件夹下,__dirname是webpack.config.js所在的当前目录路径
output: {
// filename指定生成的文件名
filename: 'bundle.js',
path: path.resolve(__dirname,'dist')
}
}
// 使用npx webpack --config config1.js可以修改默认关联的配置文件由webpack.config.js变成config1.js,以config1.js为配置文件进行打包
// 在package.json中可以修改"script"标签后的配置,比如"bundle":"webpack",这样在命令行输入npm run bundle也可以将项目进行打包

打包输出的内容:

npm run bundle之后,终端命令行里会显示几行信息表示打包成功,Chunks是打包的id,Chunk Names就是entry下面的main。

如果没有设置mode: 'production',命令行会提示警告,在entry之前加上mode的配置就不会再提示警告了,如果不想打包出来的文件压缩,可以把'production'改成'development'。'production'是默认压缩打包之后的文件的。

webpack核心概念

loader: webpack不能识别非js后缀结尾的模块,就需要通过loader让webpack识别出来,在配置文件中增添module配置项,使用'file-loader'(需要npm install file-loader)

webpack进阶

webpack实战配置案例

webpack底层原理及脚手架工具分析

值得一学的webpack4的更多相关文章

  1. 值得一学的C语言

    P1085 不高兴的津津 #include <stdio.h> int main( ) { int a,b; int max=0; int result; for (int i = 0; ...

  2. 【转】科大校长给数学系学弟学妹的忠告&本科数学参考书

    1.老老实实把课本上的题目做完.其实说科大的课本难,我以为这话不完整.科大的教材,就数学系而言还是讲得挺清楚的,难的是后面的习题.事实上做1道难题的收获是做10道简单题所不能比的. 2.每门数学必修课 ...

  3. webpack4提升180%编译速度

    前言 对于现在的前端项目而言,编译发布几乎是必需操作,有的编译只需要几秒钟,快如闪电,有的却需要10分钟,甚至更多,慢如蜗牛.特别是线上热修复时,分秒必争,响应速度直接影响了用户体验,用户不会有耐心等 ...

  4. 字典树 - A Poet Computer

    The ACM team is working on an AI project called (Eih Eye Three) that allows computers to write poems ...

  5. 自己瞎捣腾的Win7下Linux安装之路-----理论篇

    接着上回说道,我把双系统做好啦,开心.... 之后我就在想几个问题: 1.在Ubuntu装好后,重启电脑却还是win7,等我用EasyBCD之后,才可选择使用装好的Ubuntu呢? 2.在用EasyB ...

  6. libqxt编译

    一.说明 编译环境:win10.qt5.6.1-1.vs2013和libqxt源码(从git上下载) libqxt:libqxt 关于libqxt的说明,请到libqxt的官网阅读,说着看图1,图1是 ...

  7. nodejs实现Websocket的数据接收发送

    在去年的时候,写过一篇关于websocket的博文:http://www.cnblogs.com/axes/p/3586132.html ,里面主要是借助了nodejs-websocket这个插件,后 ...

  8. Yii2初级入门教程

    下载安装 Yii挺火的,也是MVC的Web框架.国内占有率,相当不错.值得一学. 网络上提供了两个版本模板的下载, advanced, 和 basic, 使用起来一致, 提供的模块支持不同. Adva ...

  9. 【leetcode】Remove Duplicates from Sorted Array

    题目描述: Given a sorted array, remove the duplicates in place such that each element appear only once a ...

随机推荐

  1. 客户端传值里面包含URL特殊字符的应对方法

    URL传递值的时候参数里面含有%2f等URL转义问题可通过URLDecoder.decode(字符串,“utf-8”);的方法去转义为"/". 此外:URLEncoder是将字符串 ...

  2. Android视频录制从不入门到入门系列教程(一)————简介

    一.WHY Android SDK提供了MediaRecorder帮助开发者进行视频的录制,不过这个类很鸡肋,实际项目中应该很少用到它,最大的原因我觉得莫过于其输出的视频分辨率太有限了,满足不了项目的 ...

  3. MongoDB个人简单总结

    当同一个变量被连续插入两次会出现id相同的异常,但是同样内容的两个变量同时插入不会有问题,可能是同一个变量同一个地址生成id相同,导致异常. 默认登陆不需要用户名密码认证,需要密码认证登陆需要在adm ...

  4. 事务的四大特性(ACID):

    事务的四大特性(ACID):    1.原子性(Atomicity): 事务中所有操作是不可再分割的原子单元.事务中所有操作要么都执行成功,要么都执行失败. 2.一致性(Consistency): 事 ...

  5. Eclipse里JAR文件的打包和使用

    作用:用于封装class.properties文件,是文件封装的最小单元:     包含Java类的普通库.资源(resources).辅助文件(auxiliary files)等.     可以将程 ...

  6. 我为什么要花大力气从头研发智表ZCELL(一个仿EXCEL的前端插件)

    为什么呢,一个前端用的,类似EXCEL的操作的JS 插件,从头研发真的有必要吗?可能你会觉得没有必要吧,其实我自己也问过自己好多遍.因为业界有更加强大的spreadjs,也有比较轻型的JEXCEL,自 ...

  7. 《Python 数据科学实践指南》读书笔记

    文章提纲 全书总评 C01.Python 介绍 Python 版本 Python 解释器 Python 之禅 C02.Python 基础知识 基础知识 流程控制: 函数及异常 函数: 异常 字符串 获 ...

  8. 一文读懂 JAVA 异常处理

    JAVA 异常类型结构 Error 和 Exeption 受查异常和非受查异常 异常的抛出与捕获 直接抛出异常 封装异常并抛出 捕获异常 自定义异常 try-catch-finally try-wit ...

  9. 基于Linux下catalog方式的 Oracle 备份策略(RMAN)

    --********************************** -- 基于Linux下 Oracle 备份策略(RMAN) --******************************* ...

  10. [原创]基于SpringAOP开发的方法调用链分析框架

    新人熟悉项目必备工具!基于SpringAOP开发的一款方法调用链分析插件,简单到只需要一个注解,异步非阻塞,完美嵌入Spring Cloud.Dubbo项目!再也不用担心搞不懂项目! 很多新人进入一家 ...