大家好!我是萝卜,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是一个方便开发者访问 node modules 内的 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 3. webpack-cli 零配置打包相关推荐

  1. webpack打包压缩混淆_细说webpack系列 3. webpack-cli 零配置打包

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

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

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

  3. 零配置构建工具:parcel

    更多内容欢迎来到博客:https://imjianjian.github.io 为什么学习parcel 17年12月6日,parcel发布了第一个正式版本,目前已经在GitHub上收获了17.7k+个 ...

  4. react 引用本地js_从零配置webpack 4+react脚手架(二)

    前言: 你可能也注意到了,html文件中的关于js的引用是我们手动写的,那假如我们改了输出路径或打包编译之后的文件名,那我们岂不是还要手动去修改html文件中的引用?我们怎么做到,像create-re ...

  5. react 文件 md5_从零配置webpack 4+react脚手架(二)

    前言: 你可能也注意到了,html文件中的关于js的引用是我们手动写的,那假如我们改了输出路径或打包编译之后的文件名,那我们岂不是还要手动去修改html文件中的引用?我们怎么做到,像create-re ...

  6. 从零配置webpack(react+less+typescript+mobx)

    本文目标 从零搭建出一套支持react+less+typescript+mobx的webpack配置 最简化webpack配置 首页要初始化yarn和安装webpack的依赖 yarn init -y ...

  7. webpack的使用、安装和配置打包的入口和出口

    webpack的基本使用 在这里我使用VScode为编辑器讲解 隔行变色案例 第一步:创建项目空白文件,并在终端中运行npm init -y 命令.初始化包管理配置文件package.json 第二步 ...

  8. webpack 的基本使用——配置打包的入口与出口||配置 webpack 的自动打包功能

    配置打包的入口与出口 const path = require('path') // 导入 node.js 中专门操作路径的模块 module.exports = { entry: path.join ...

  9. webpack代理配置打包后接口404_webpack 从零开始

    什么是webpack? webpack 可以看做是是一个现代 JavaScript 应用程序的静态模块打包器(module bundler).当 webpack 处理应用程序时,它会递归地构建一个依赖 ...

最新文章

  1. CNCC技术论坛丨联邦学习冲刺人工智能“最后一公里”!
  2. 通过微信企业号发送zabbix报警
  3. python调用dll例子
  4. 2019年全栈工程师技术指南和趋势!
  5. AndFix解析——(上)
  6. mc服务器村民交易修改,【原创】【教程】MCPE自定义村民交易内容
  7. Elasticsearch 节点发现
  8. win10 64 + VS2010 + Opencv 2.4.9 + HIKVISION(海康)
  9. 『设计模式』Web程序开发最基本的编程模式--MVC编程模式
  10. 深入理解Java ClassLoader及在 JavaAgent 中的应用
  11. 看到碟摊上有D版的《阿猫阿狗2》
  12. 福利网站!程序员面试——算法工程师面试大全第一部分
  13. 选择覆盖方法设计测试用例
  14. 2021年电工(初级)考试题及电工(初级)找解析
  15. Oracle里default什么意思,ORACLE中默认值default的使用方法
  16. 沉病孩子留遗嘱 父疏申请接济劫持红十字员农
  17. 区块链技术将引爆金融深层价值|筱静观察2019第7期
  18. 借助Zynq RFSoC DFE解决 5G 大规模部署难题
  19. tensorflow函数 tf.nn.xw_plus_b
  20. 荐读:Xilinx ZYNQ 动手实操演练

热门文章

  1. 上传excel,比对后批量修改(临时表)(三)
  2. python实现语音播放_光环板播放语音 Python--慧编程高级玩法
  3. 性能优化——提升Win10系统反应速度
  4. 32岁男中专学历,请问学习HCIE转行能找到工作吗?
  5. 商务合同OCR全文检索
  6. 如何将 ONLYOFFICE 文档与 Confluence 进行连接
  7. eecall网络电话资费的介绍
  8. 局域网arp攻击怎么办,如何解决arp内网攻击?
  9. box2d 服务器性能,Box2d预览
  10. win10下PowerDesigner安装及破解