当前位置: 首页 > news >正文

Webpack4 学习笔记 - 01:webpack的安装和简单配置

安装 webpack

新建一个Demo文件夹,执行初始化:

npm init

在Demo文件夹里安装 webpackwebpack-cli

npm install webpack webpack-cli -D

webpack-cli 可以使用命令行的方式来使用 webpack,从版本4开始,webpackwebpack-cli 分别管理, 如果不安装 webpack-cli, 就没法使用命令行了。安装完之后,执行

webpack -v

查看安装是否成功。但是,命令执行后,会给你一个大大的错误提示,类似这样:

webpack: command not found

这是因为 webpack 并非全局安装的,当输入这个命令时,npm 会从全局的目录模块中找 webpack,找不到就报错了。
那怎么运行刚装好的 webpack 呢? 通过 npx 命令来运行就OK了:

npx webpack -v

npx 会寻找存在于项目内node_modules目录下的安装包。

创建项目并简单配置

webpack安装完毕,接下来就开始写demo,创建几个文件夹和文件,如图:

clipboard.png

index.html 中的内容:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>webpack4 学习笔记</title>
</head>
<body>
    <div id='root'></div>
    <script src='./dist/bundle.js'></script>
</body>
</html>

header.js中的内容:

function Header() {
    var dom = document.getElementById('root');
    var header = document.createElement('div');
    header.innerText = '这里是Header区域';
    dom.append(header);
}

module.exports = Header;

index.js中的内容:

const Header = require('./header.js');

new Header();

webpack.config.js中的内容:

const path = require('path');  // 得到的path为webpack.config.js所在的目录

module.exports = {
    entry: {
        main: './src/index.js'
    },
    output: {
        filename: 'bundle.js',
        path: path.resolve(__dirname, 'dist')
    },

    mode: 'development'
}

其中 webpack.config.jswebpack 的默认配置文件,关于 webpack 的配置信息默认都要写到这个文件中。

entrywebpack 要打包的入口文件,必须要提供一个入口,webpack 才知道从哪里开始打包,否则会报错,这里的入口文件就是src目录下的index.js文件。

output 是出口文件,即打包过的文件放到哪里了。path 就是存放的路径,path.resolve(__dirname, 'dist') 表示路径为根目录下的dist文件夹。filename: 'bundle.js' 表示打包后的文件名为bundle.js。

mode: 'development' 表示当前的工作模式为开发环境,如果不配置 mode 则默认为 production,即生产环境。

简单配置完成,运行命令:

npx webpack

可以看到文件已经打包好,webpack自动生成了一个dist目录,并把bundle.js放在了该目录下:

clipboard.png

打开index.html,可以看到内容正确显示出来:
clipboard.png

OK,一个简单的配置完成了。


如果不想通过

npx wepack

这个命令来打包,可以在package.json中配置下 scripts

  "scripts": {
    "bundle": "webpack"
  },

这样,在命令行输入

npm run bundle

同样会完成打包,而且这种配置很灵活,后续可以配置不同的命令来打包出不同的结果。

相关文章:

  • 如何更有效的消灭watchdogs挖矿病毒?华为云DCS Redis为您支招
  • 译有关态射的一切
  • java注解的概念理解
  • 详解NodeJs流之一
  • 智能驾驶正文 0 戴姆勒与宝马抱团开发自动驾驶 新旧车企大战在即
  • 数据建模的三种分类(来自Enterprise Architect的文档)
  • Docker镜像提交命令commit的工作原理和使用方法
  • linux 计划任务
  • Ant Design 3.14.1 发布,企业级的 UI 设计语言
  • mpvue小程序开发中配置less支持
  • Android Intent传递对象为什么要序列化?
  • Vue源码解读
  • TableStore: 海量结构化数据分层存储方案
  • GitHub Draft Pull请求支持新的协作流程
  • 常用技巧
  • - C#编程大幅提高OUTLOOK的邮件搜索能力!
  • Eureka 2.0 开源流产,真的对你影响很大吗?
  • express + mock 让前后台并行开发
  • GitUp, 你不可错过的秀外慧中的git工具
  • JavaScript设计模式系列一:工厂模式
  • JS变量作用域
  • js继承的实现方法
  • Linux链接文件
  • PHP 使用 Swoole - TaskWorker 实现异步操作 Mysql
  • puppeteer stop redirect 的正确姿势及 net::ERR_FAILED 的解决
  • Quartz实现数据同步 | 从0开始构建SpringCloud微服务(3)
  • 对象管理器(defineProperty)学习笔记
  • 跨域
  • 前端工程化(Gulp、Webpack)-webpack
  • 携程小程序初体验
  • 一些基于React、Vue、Node.js、MongoDB技术栈的实践项目
  • 找一份好的前端工作,起点很重要
  • ​软考-高级-系统架构设计师教程(清华第2版)【第20章 系统架构设计师论文写作要点(P717~728)-思维导图】​
  • ​软考-高级-信息系统项目管理师教程 第四版【第19章-配置与变更管理-思维导图】​
  • #宝哥教你#查看jquery绑定的事件函数
  • #基础#使用Jupyter进行Notebook的转换 .ipynb文件导出为.md文件
  • $分析了六十多年间100万字的政府工作报告,我看到了这样的变迁
  • (4)logging(日志模块)
  • (AngularJS)Angular 控制器之间通信初探
  • (附源码)SSM环卫人员管理平台 计算机毕设36412
  • (一)基于IDEA的JAVA基础10
  • (原+转)Ubuntu16.04软件中心闪退及wifi消失
  • (转)linux自定义开机启动服务和chkconfig使用方法
  • (转)程序员技术练级攻略
  • .NET delegate 委托 、 Event 事件
  • .Net Web窗口页属性
  • .Net 路由处理厉害了
  • .Net小白的大学四年,内含面经
  • [20181219]script使用小技巧.txt
  • [3D基础]理解计算机3D图形学中的坐标系变换
  • [bzoj4010][HNOI2015]菜肴制作_贪心_拓扑排序
  • [C++][基础]1_变量、常量和基本类型
  • [C++]C++类基本语法
  • [C++提高编程](三):STL初识
  • [HDU 3555] Bomb [数位DP]