大家好!我是萝卜,webpack 4 带来了大量的更新,其中一个就是webpack 4 默认不需要配置文件,下面就带大家体验一下!

初始化项目

首先创建项目,创建一个名为webpack的文件夹,进入文件夹使用npm init进行初始化,代码如下:

// 创建目录并进入
mkdir webpack && cd $_
// 初始化项目
npm init -y
// 安装 webpack 以及 webpack-cli 到本地的开发依赖
npm i webpack -D
npm i webpack-cli -D

创建目录

新建src目录,放置源码。

// 创建 src 目录
mkdir src
// 进入 src 目录下 创建 index.js
touch index.js tool.js

目录结构如下:

|---- src|---- index.js|---- tool.js

index.js和tool.js两个文件内容如下:

// tool.js
module.exports = 'webpack';
// index.js
var str = require('./tool');
var hello = 'hello';
console.log(`${hello} ${str}`);

准备好以上内容后,我们在 webpack 目录下执行 npx webpack 命令,执行后,我们查看webpack目录下会生成一个dist目录,进入dist目录后会看到main.js文件,这个文件就是webpack打包压缩后的文件。

Tips: npx是一个方便开发者访问 nodemodules 内的 bin 命令行的工具,npx webpack 相当于执行了 node_modules/webpack/bin/webpack,npx在开发中非常方便,推荐安装:npm install -g npx。

到此我们可以发现 webpack 4 与之前版本的不同之处,在之前的版本中,必须在名为webpack.config.js 的配置文件中,通过 entry 属性定义 entry point(入口点),通过 output 属性定义output file(输出文件),在 webpack 4 中,既不必须定义 entry point(入口点) ,也不必须定义 output file(输出文件)。入口点默认为 src 目录下的 index.js 文件,输出文件默认为 dist 目录下的 main.js 文件。

production(生产) 和 development(开发) 模式

在通过命令 npx webpack 进行打包后,在控制台会出现一段警告⚠️:

WARNING in configuration
The 'mode' option has not been set, webpack will fallback to 'production' for this value. Set 'mode' option to 'development' or 'production' to enable defaults for each environment.
You can also set it to 'none' to disable any default behavior. Learn more: https://webpack.js.org/configuration/mode/

事实上,webpack 4 引入了production(生产)development(开发)模式。我们可以在 package.json中进行配置。

"scripts": {"dev": "webpack --mode development","build": "webpack --mode production"
}

然后在 webpack 目录下执行:npx webpack -d 命令,然后进入 dist 目录下查看 main.js 文件,我们会发现这是一个没有经过压缩的文件,现在在返回 webpack 目录下,执行命令:npx webpack -p 命令,然后进入 dist 目录下查看 main.js 文件,我们发现一个已经经过压缩的 bundle 。production mode(生产模式)可以开箱即用地进行各种优化,包括:压缩、作用域提升、tree-shaking 等。

修改打包输出目录

如果我们要修改 webpack 的默认输出目录,需要用到 webpack 命令的 --output,我们将上面的 npm script 做下修改:

"scripts": {"dev": "webpack --mode development --output ./output/main.js","build": "webpack --mode production --output ./output/main.js"
}

此时在执行 npx webpack -p ,则 webpack 会将打包后的文件输出到 output/main.js路径了。

小结

这一章我们演示了使用 webpack-cli 命令来完成 webpack 的零配置打包,webpack-cli命令的选项比较多,详细的可以查阅 webpack-cli的文档,这里我总结了常用的最多几个选项:

1. webpack-cli 支持两个快捷选项:-d 和 -p,分别代表开发环境和生产环境的打包。
2. 可以通过参数 --display-error-details 来打印错误信息:npx webpack --display-error-details。
3. 可以通过命令:npx webpack --progress --colors 让编译输出的内容带有进度和颜色。
4. 如果不想每次修改模块后都重新编译,则可以开启监听模式,开启后,没有变化的模块会在编译后缓存到内存中,而不会每次都被重新编译,所以监听模式的整体速度是很快的:npx webpack --watch.
5. 通过 -hot 选项开启 Hot Module Replacement 模式。
6. 通过 -profile 选项详细的输出每个环节的用时,排查打包速度瓶颈。
7. 通过 -config 指定一个 webpack 配置文件的路径。

webpack打包压缩混淆_细说webpack系列 3. webpack-cli 零配置打包相关推荐

  1. webpack打包压缩混淆_前端打包利器:webpack工具

    一.什么是WebPack,为什么要使用它? 1.为什要使用WebPack 现今的很多网页其实可以看做是功能丰富的应用,它们拥有着复杂的JavaScript代码和一大堆依赖包.为了简化开发的复杂度,前端 ...

  2. 细说webpack 3. webpack-cli 零配置打包

    大家好!我是萝卜,webpack 4 带来了大量的更新,其中一个就是webpack 4 默认不需要配置文件,下面就带大家体验一下! 初始化项目 首先创建项目,创建一个名为webpack的文件夹,进入文 ...

  3. [转载]用UglifyJS2合并压缩混淆JS代码——javascript系列

    从零开始nodejs系列文章,将介绍如何利Javascript做为服务端脚本,通过Nodejs框架web开发.Nodejs框架是基于V8的引擎,是目前速度最快的Javascript引擎.chrome浏 ...

  4. python3.7打包exe坑_[求助]入坑学习python 需要装pyinstaller打包成exe

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 E:\Python>pyinstaller -F E:\Python\123.py 142 INFO: PyInstaller: 3.2.1 142 ...

  5. 工作目录切换命令、打包压缩文件命令

    pwd命令显示当前工作目录,格式:"pwd[选项]" 参数                         作用 -p                              显 ...

  6. 【已阅】日志与时间戳,客户端与服务器端,打包压缩解压解包介绍,date,cal,zip,unzip,tar指令等

    日志与时间戳 计算机世界里面,时间其实很重要的,首先我们需要有日志这个概念,这个日志其实就跟日记一样,那么在日记里面的话就会有时间.时间真的非常关键,比方在出现问题的时候去找到这个问题出现的时间点,然 ...

  7. Parcel极速零配置Web应用打包工具

    当听到极速零配置打包,我不经兴奋起来,零配置!!!想起在webpack打包的配置,这个零配置着实让我好奇不已,迅速学习一波. Parcel(parcel 英[ˈpɑ:sl] 美[ˈpɑ:rsl])有以 ...

  8. 当下常用的webpack版本_细说 webpack系列 1. 为什么要选择 webpack

    大家好!我是萝卜,webpack作为目前最流行的构建工具,几乎成为前端同学武器库中必备的工具之一,写这个系列文章的用意就是想把自己在平时工作中使用webpack的一些经验和心得和大家分享,也是对自己这 ...

  9. webpack打包路径更改_扫盲: Webpack 从扫盲到手撸(上)

    鹿哥,作为前端初学者,能不能给扫盲一下 webpack,毕竟这东西在学校项目中用到的少,还是特别想了解一下的. 说起 webpack,小鹿会专门出一个系列,从简单的扫盲到手撸,这是一个过程,只要能踏实 ...

最新文章

  1. Asp.Net生命周期系列一
  2. Event and Delegate
  3. webstrom使用方法
  4. 用c语言开发图形界面,「分享」C语言如何编写图形界面
  5. 计算机组成材质,计算机组成原理及应用期末复习材料
  6. SQLSERVER是怎麽通过索引和统计信息来找到目标数据的(第二篇)
  7. 【Python】【有趣的模块】【systimeos】
  8. 在没有密码提示的情况下在Ubuntu上安装MySQL
  9. jmeter与jdk的安装
  10. cad有没有网页版_电脑中好用的免费CAD查看软件 满满的干货
  11. 漫画 前端发展史的江湖恩怨情仇~
  12. u盘如何安装2003服务器系统,怎么用u盘安装2003系统安装教程
  13. Nginx开启GZIP压缩,提升前端访问速度
  14. deepin系统 crontab 执行自动任务
  15. iq2010wifi测试软件,LitePoint IQ2010蓝牙测试仪WIFI/GPS/NFC
  16. Java输出PPT文件(三) - 饼图数据替换
  17. Swift入门笔记(二)
  18. 【观察】联想HPC:冠军之路,永不止步
  19. mysql稳定性_MySQL的稳定性
  20. 优思学院|六西格玛黑带和带级的的由来|原创文章

热门文章

  1. 真正的代码宝库:Google Code Search
  2. c语言115写成16进制,西安电子科技大学计算机导论与C语言程序设计 计算机文化概论.pdf...
  3. IAR 下根据官方库建立 STM32的工程
  4. 关于BCT,你需要知道的是...
  5. 深入解析 | Oracle Database 20c 十大新特性一览
  6. 不懂分布式锁的这些问题,就亏大了
  7. 【伙伴故事】一盏智能灯,点亮家庭和工业照明的新未来
  8. 云小课|打造企业数据“高内聚,低耦合”--试试GaussDB(DWS)逻辑集群,实现数据物理隔离
  9. 七夕赶上服务器架构升级,女朋友的约会怎么办
  10. 技术应用丨DWS 空间释放(vacuum full) 最佳实践