一.基本安装

首先我们要创建一个目录,初始化npm,以及在本地安装webpack:复制代码
mkdir webpackapp && cd webpackapp复制代码
npm init -y复制代码
npm install --save-dev webapck复制代码
现在我们看一下我们创建的目录以及目录下的结构复制代码

二.简单实用webpack

我们先全局安装webpack: npm install -g webpack复制代码
此时,我们可以执行命令:webpack -v来查看webpack的版本号。复制代码
我们在根目录下新建一个文件:hello.js,并在其中输入代码。复制代码
function hello(str) { alert(str); } hello('hello world!');复制代码
这时,我们在命令行中输入:复制代码
webpack hello.js bundle.js复制代码
然而,预期的结果和想象的不一样:复制代码
The CLI moved into a separate package: webpack-cli Would you like to install webpack-cli? (That will run npm install -D webpack-cli) (yes/NO)复制代码
或复制代码
The CLI moved into a separate package:webpack-cli. Please install 'webpack-cli' in addition to webpack itself to use the CLI. ->when using npm: npm install webpack-cli -D ->when using yarn: yarn add webpack-cli -D复制代码
报出这两种任意一种的结果的意思是什么呢? 翻译成中文: CLI(命令行工具)已经转移到了一个单独的包webpack-cli中。 除了webpack自身外,请额外安装webpack-cli来使用CLI。 -> 使用npm安装:npm install webpack-cli -D ->使用yarn安装:yarn add webpack-cli -D复制代码
也就是说,在以前的webpack版本中CLI(命令行工具)是存在于webpack中的,而现在呢,它自己独立出来了,单独地放在一个单独webpack-cli包中。所以呢,现在想要使用CLI(命令行工具)就必须安装webpack-cli才行。复制代码
安装webpack-cli:复制代码
npm install webpack-cli -D复制代码
再次运行:复制代码
webpack hello.js bundle.js复制代码
发现还是报出:复制代码
The CLI moved into a separate package: webpack-cli Would you like to install webpack-cli? (That will run npm install -D webpack-cli) (yes/NO)复制代码
这时,我们就要全局安装webpack-cli:复制代码
npm install webpack-cli -g复制代码
现在,我们再试一下。复制代码
webpack hello.js bundle.js复制代码
结果又出现了新情况:复制代码
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/concepts/mode/ ERROR in multi ./hello.js bundle.js Module not found: Error: Can't resolve 'bundle.js' in 'C:\Users\Administrator\Desktop\webpackapp' @ multi ./hello.js bundle.js复制代码
翻译成中文: 配置警告: “mode”选项尚未设置。将“mode”选项设为“development”或“production”以启用此环境的默认设置。 multi错误 ./ hello.js bundle.js 未发现模块:错误:无法解析’C:/Users/你的用户名/Desktop/webpack-test’中的bundle.js @ multi ./hello.js bundle.js复制代码
这里的提示就是告诉我们,存在的第一个问题就是没有配置webpack的mode选项,默认的有production和development两种模式可以设置,因此我们尝试设置为development模式,在命令行中输入:复制代码
webpack --mode development复制代码
我们看到进行了打包并显示了Hash、Version、Time、Build at信息,表明已经可以打包。不过,仍然有错误提示:复制代码
ERROR in Entry module not found: Error: Can't resolve './src' in 'C:\Users\Administrator\Desktop\webpackapp'复制代码
翻译成中文:复制代码
未找到入口模块发生错误:错误:无法解析:'C:\Users\Administrator\Desktop\webpackapp'复制代码
它的意思就是,表明webpack4.x是以项目根目录下的'./src'作为入口,但是我们的项目中缺乏该路径,因此我们在根目录下创建一个src文件夹,事实上,webpack4.x以'./src/index.js'作为入口,单单创建src文件夹而没有index.js文件仍然会报错,因此我们:复制代码
将hello.js移动到'./src'中,并重新命名为'index.js'.复制代码
我们在运行一次: webpack index.js bundle.js复制代码
它还会提示can.t resolve相关的错误。复制代码
这种错误的原因是:webpack4.x的打包已经不能用'webpack 文件a 文件b' 这种方式打包了,而是在命令行中直接运行'webpack --mode development'或者'webpack --mode production'这种方式来完成打包。其中,入口文件是'./src/index.js',输出路径是'./dist/main.js'。其中,src目录中的index.js文件需要我们手动的去创建,而dist目录及dist目录下的main.js文件它会自动生成。所以说呢,这种'webpack 文件a 文件b'的打包方式已经不适用了,而是改为直接运行:复制代码
webpack --mode development复制代码
或复制代码
webpack --mde production复制代码
出现下面这种情况说明打包成功:复制代码
C:\Users\Administrator\Desktop\webpackapp>webpack --mode development Hash: c66758f7d1a4004b7b60 Version: webpack 4.5.0 Time: 608ms Built at: 2018-4-6 00:42:40 Asset Size Chunks Chunk Names main.js 2.88 KiB main [emitted] main Entrypoint main = main.js [./src/index.js] 65 bytes {main} [built]复制代码

不过每次都要输入这个命令,非常麻烦,我们在package.jsonscripts中加入两个成员:

"scripts": { "test": "echo \"Error: no test specified\" && exit 1", "dev":"webpack --mode development", "build":"webpack --mode production" }复制代码
以后在打包的过程中,我们只需要执行npm run dev就相当于执行webpack --mode development, 执行npm run build就相当于执行webpack --mode production复制代码
我们如果需要配置webpack指令的其他参数,只需要在webpack –mode production/development后加上其他参数即可,如: webpack --mode development --watch --progress --display-modules --colors --display-reasons复制代码
当然,这也可以写入package.json的scripts之中。复制代码
总结: 我们可以将以上探索进行整理总结,首先是注意事项: 1、webpack-cli必须要全局安装,否则不能使用webpack指令; 2、webpack也必须要全局安装,否则也不能使用webpack指令。 3、webpack4.x中webpack.config.js这样的配置文件不是必须的。 4、默认入口文件是./src/index.js,默认输出文件./dist/main.js。复制代码
配置步骤: 1、创建工程目录; 2、初始化工程目录:npm init。 3、全局安装webpack-cli。 4、全局安装webpack。 5、webpack –mode development/production进行打包,可在package.json中配置dev和build的脚本,便只需运行npm run dev/build,作用相同。 6、在webpack –mode development/production可串联设置其他参数。复制代码

今天就讲到这里吧,后续会继续更新,别忘了关注了哦!

转载于:https://juejin.im/post/5ac65a376fb9a028cc6174f3

webpack二(以webpack4.x起步)相关推荐

  1. JS逆向之Webpack(二)

    JS逆向之Webpack(二) 难度: ⭐️ 网址如下 https://synconhub.coscoshipping.com/ 需要逆向的值: 登录请求的password 找到加密的位置 看起来想R ...

  2. webpack二刷之五、生产环境优化(3.sideEffects 副作用)

    sideEffects 副作用 webpack4新增的功能. 允许通过配置的方式去标识代码是否有副作用,从而为 Tree Shaking 提供更多的压缩空间. sideEffects 一般用于开发np ...

  3. 学习webpack(二)

    1.在webpack.config.js中写入以下代码 var path = require('path'); // 导入路径包 module.exports={ entry:'./src/scrip ...

  4. 科目二-坡道定点停车起步

    坡道定点停车和起步 1.找到车身与右边缘30cm位置(方向盘对准箭头和虚线 或者 雨刷凸起点对边线 或者 看后视镜车身与边缘一指宽) ,将车摆正(眼光放远,视线与边缘线不交叉,正了后 方向盘回正保持) ...

  5. Vue-前端工程化与 webpack(二)

    webpack 中的 loader(了解) 1. loader 概述 在实际开发过程中,webpack 默认只能打包处理以 .js 后缀名结尾的模块.其他非 .js 后缀名结尾的模块, webpack ...

  6. 驾校学车,科目二坡路定点停车和起步操作技巧!

    前方就是上坡路定点停车与陡坡起步考试科目地点 驾车在上坡路定点停车与陡坡起步,可以提高使用档位和离合器的能力,以适应在上坡路段固定地点靠边停稳车辆和等候放行时的操作需要. 考试内容通过视觉和感觉及时判 ...

  7. html 打包优化,Webpack打包优化

    一.前言 对于使用vue开发项目的FE来说,打包上线这个环节相信大家都不陌生.本文主要是介绍如何通过webpack(实践版本:webpack4.16.5)的配置来提高打包构建速度以及减小包的体积. 二 ...

  8. 爬虫-Webpack逆向实战 有习题

    爬虫-Webpack逆向实战 我只要喝点果粒橙关注IP属地: 青海 0.1052022.04.30 19:21:46字数 4,875阅读 5,142 全文目录 webpack打包是前端js模块化压缩打 ...

  9. webpack 最简打包结果分析

    原文链接:https://ssshooter.com/2019-02... 现在的 webpack 不再是入门噩梦,过去 webpack 最让人心塞的莫过于配置文件,而 webpack4 诞生随之而来 ...

最新文章

  1. 国内数十位大佬合作,综述预训练模型的过去、现在与未来
  2. SharePoint 2010 文档库添加文件icon
  3. 9.1-全栈Java笔记: 容器泛型—认识Collection接口
  4. pat 乙级 1013 数素数(C++)
  5. 苹果为何没赶上5G手机的“首班车”?
  6. HackerOne 发布《2021年黑客报告》:黑客的动力、发展和未来
  7. 二十三种设计模式之:适配器模式
  8. Atitit 人员级别评定法 目录 1.1. 十级评定法1--10 vs 年级评定法 1 1.2. 工龄评定 职级 岗位级别 1 2. 修订系数 学历*授课+绩效 1 3. 计算方法 1
  9. 云计算与大数据技术应用
  10. matlab热度图确定色标_MATLAB 颜色图函数(imagesc/scatter/polarPcolor/pcolor)
  11. java 文件分隔符_java知识点---文件分隔符
  12. php fpm listen.owner,php-fpm配置详解
  13. 手机镜头,噪声建模,ISP,ISO与analog gain
  14. 一度智信电商:店铺转化率太低?
  15. 星星之火-55:什么是微观量子?什么是量子的六大特征?什么是微观量子通信?
  16. ES module和commonJS循环引用问题
  17. 可视化篇:Echarts2.0引入百度地图(转载)
  18. php时间戳转换成时间的方法
  19. 计算机网络 (2)标准化工作、性能指标、分层结构
  20. 看完就会使用Nacos-服务发现

热门文章

  1. 十万个为什么儿童版_《虹猫蓝兔十万个为什么》上架爱奇艺奇巴布绘本馆
  2. php 正则替换style,php正则去除js,class,id,style标签代码
  3. 操作系统:SFTP相关知识介绍
  4. 办公效率:从事会计行业,这些Excel技巧绝对用得着!
  5. 程序人生:入门程序员最容易踩的 7 个坑!
  6. 收集MySQL常用函数,值得收藏!
  7. 前端:常用的meta标签总结
  8. 程序员常见的坏习惯,你躺枪了吗?
  9. linux内核开发基础(linux内核源码、树莓派源码编译、SD卡挂载)
  10. java hibernate的使用_《Hibernate快速开始 – 4 – 使用JAVA持久层 API (JPA)教程》