初识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. Netty中ByteBuf的引用计数线程安全的实现原理

    原文链接 Netty中ByteBuf的引用计数线程安全的实现原理 代码仓库地址 ByteBuf 实现了ReferenceCounted 接口,实现了引用计数接口,该接口的retain(int) 方法为 ...

  2. java网络爬虫基础学习(四)

    jsoup的使用 jsoup介绍 jsoup是一款Java的HTML解析器,可直接解析某个URL地址.HTML文本内容.它提供了一套非常省力的API,可通过DOM,css以及类似于Jquery的操作方 ...

  3. memcached 学习

    memcached 是什么 特点 协议简单 基于 libevent 的事件处理 内置内存存储方式 memcached 不互相通信的分布式 启动 安装 依赖 libevent 安装命令 下载地址在这个网 ...

  4. 配置安全的管理访问(GNS3)

    实验拓扑: 实验目的: 尝试用R2/R3远程登陆R1路由器并进行管理,在此之前先在R1配置安全的管理访问 1.端口IP配置 R1: e1/0 192.168.1.1/24 e1/1 192.168.2 ...

  5. 对ES6的yield示例分析

    近期ES6标准如火如荼的发展,其中主要还是各大浏览器的支持,最重要厂商支付宝,微信的支持,使得国内的发展也很迅猛. 这里主要是对yield关键字的,yield实际上可以看作是一种新的中断机制,大家都知 ...

  6. 小程序--scroll-view的横向滑动无效

  7. 华为笔记HOSTS,便于访问云端存储

    # Copyright (c) - Microsoft Corp. # # This is a sample HOSTS file used by Microsoft TCP/IP for Windo ...

  8. 【故障公告】SendCloud 邮件发送服务故障造成大量 QQ 邮箱收不到邮件

    抱歉,由于我们所使用的搜狐旗下的 SendCloud 邮件发送服务出现故障,今天上午大量发往 @qq.com 邮箱的邮件无法正常发送,从 SendCloud 管理控制台看这些邮件一直处于“请求中”的状 ...

  9. React 精要面试题讲解(一) 单向数据流

    react 单向数据流概念 'react框架是怎样的数据流向?'||'react单向数据流是怎样的概念 ?' 解答这个问题之前,我们首先得知道,js框架是个怎样的概念. 框架:具备一定**编程思想** ...

  10. C#之重写与隐藏

    一 重写与隐藏区别 (1)方法重写:就是在基类中的方法用virtual关键字来标识,然后在继承类中对该类进行重写(override),这样基类中的方法已经被重写了,已经失去了功能了.当让基类的对象的引 ...