大家好!我是萝卜,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. OSSIM主要数据库表结构
  2. Android之简单的文件夹选择器实现
  3. DFS:C 小Y的难题(1)
  4. php安装redis扩展'checking for igbinary includes... configure: error: Cannot find igbinary.h'解决方法...
  5. 第三季-第10课-时间编程
  6. JavaScript高级编程II
  7. SpringBoot中Interceptor和Filter的使用
  8. 如何进行大数据的入门级学习?
  9. 转 我的英文原版书籍阅读记录
  10. html如何让相邻的部分边框消失,css border属性边框一半或者部分可见
  11. 统计学——单因素方差分析
  12. C语言函数嵌套调用作业总结
  13. 携程:电子合同高效赋能数字文旅
  14. 三星复印机载体初始化步骤_三星复印机的使用方法
  15. linux数据库删除命令大全,linux删除数据库命令
  16. 抓取猫眼电影TOP10榜数据
  17. requests+python+unitte实现接口测试回归
  18. 【编译原理复习】第六章---- 属性文法和语法制导翻译
  19. 富士康计算机类笔试题,明天去富士康面试,还要笔试英语智力题?这个英语智力题,难不难,有没有从富士康面试完毕的大虾们,都是什么类型的题?(本人英语不好),比较着急,再次给回答人50分!...
  20. 利用 NSS Key Log 解密 HTTPS

热门文章

  1. python矩阵sin计算器_Python科学计算工具
  2. 四川大学计算机考研专业代码,[四川大学及其专业代码] 四川大学专业目录
  3. python查看数据类型的方法_pycharm下查看python的变量类型和变量内容的方法
  4. 能够背熟对你的学习很有好处的
  5. 五大云存储服务对比:iCloud、Google、亚马逊Cloud Drive、Dropbox和SkyDrive
  6. 社区团购小程序:社区团购平台要怎么留住团长?
  7. 盗贼的福音-一键换武器
  8. 浅析Python中的main函数
  9. 新零售私董会精彩观点集萃,一文读懂零售商业智能未来
  10. c语言fread函数,C语言“fread”函数的用法?