当前位置: 首页 > 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请求支持新的协作流程
  • 常用技巧
  • 分享的文章《人生如棋》
  • 收藏网友的 源程序下载网
  • 《深入 React 技术栈》
  • Java超时控制的实现
  • Python连接Oracle
  • Vue官网教程学习过程中值得记录的一些事情
  • 从0到1:PostCSS 插件开发最佳实践
  • 构建二叉树进行数值数组的去重及优化
  • 记一次用 NodeJs 实现模拟登录的思路
  • 技术胖1-4季视频复习— (看视频笔记)
  • 简单基于spring的redis配置(单机和集群模式)
  • 前端每日实战:70# 视频演示如何用纯 CSS 创作一只徘徊的果冻怪兽
  • 前端学习笔记之原型——一张图说明`prototype`和`__proto__`的区别
  • 如何设计一个微型分布式架构?
  • 如何用Ubuntu和Xen来设置Kubernetes?
  • 文本多行溢出显示...之最后一行不到行尾的解决
  • 新手搭建网站的主要流程
  • 一道闭包题引发的思考
  • 自定义函数
  • 东超科技获得千万级Pre-A轮融资,投资方为中科创星 ...
  • ​比特币大跌的 2 个原因
  • ​批处理文件中的errorlevel用法
  • ​如何防止网络攻击?
  • $.each()与$(selector).each()
  • $.proxy和$.extend
  • (06)Hive——正则表达式
  • (1)常见O(n^2)排序算法解析
  • (22)C#传智:复习,多态虚方法抽象类接口,静态类,String与StringBuilder,集合泛型List与Dictionary,文件类,结构与类的区别
  • (Demo分享)利用原生JavaScript-随机数-实现做一个烟花案例
  • (WSI分类)WSI分类文献小综述 2024
  • (差分)胡桃爱原石
  • (二十五)admin-boot项目之集成消息队列Rabbitmq
  • (论文阅读笔记)Network planning with deep reinforcement learning
  • (太强大了) - Linux 性能监控、测试、优化工具
  • (一)基于IDEA的JAVA基础12
  • (转) 深度模型优化性能 调参
  • (转)拼包函数及网络封包的异常处理(含代码)
  • (转载)微软数据挖掘算法:Microsoft 时序算法(5)
  • .net refrector
  • @Bean, @Component, @Configuration简析