我的编程空间,编程开发者的网络收藏夹
学习永远不晚

webpack-cli在webpack打包中的作用是什么

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

webpack-cli在webpack打包中的作用是什么

这篇文章主要讲解了“webpack-cli在webpack打包中的作用是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“webpack-cli在webpack打包中的作用是什么”吧!

    webpack & webpack-cli

    webpack Introduction

    webpack 是一个静态的模块化打包工具,为现代的JavaScript应用程序服务

    webpack-cli在webpack打包中的作用是什么

    打包 bundler:webpack可以帮助我们进行打包,所以它是一个打包工具

    静态的static:将代码打包成最终的静态资源(部署到静态服务器

    模块化module:webpack默认支持各种模块化开发,ES Module、CommonJS、AMD等

    现代modern:前端开发的各种问题,催生了webpack的出现

    webpack 安装

    npm install webapck webpack-cli --save-dev

    webpack 从 4.0 版本开始,在安装时,就必须要安装这两个东西。

    webpack 是打包代码时依赖的核心内容,而 webpack-cli 是一个用来在命令行中运行 webpack 的工具。

    但,webpack-cli对于打包文件不是必要的,这是为什么呢?

    webpack-cli 详解

    npm run build 命令来解析 webpack-cli 在代码打包中的作用,wk.config.js 为自定义webpack 配置文件

    "scripts": {    "build": "webpack --config wk.config.js" }

    当在命令行中执行 npm run build 时,会执行node_modules/.bin下的webpack可执行文件

    webpack-cli在webpack打包中的作用是什么

    这里有三个可执行文件,分别对应不同的平台

    # unix 系统默认可执行文件,必须输入完整文件名webpack# windows cmd 中默认的可执行文件webpack.cmd# windows PowerShell 中可执行文件,可以跨平台webpack.ps1

    以webpack可执行文件内容为例:

    #!/bin/shbasedir=$(dirname "$(echo "$0" | sed -e 's,\,/,g')")case `uname` in    *CYGWIN*|*MINGW*|*MSYS*) basedir=`cygpath -w "$basedir"`;;esacif [ -x "$basedir/node" ]; then  "$basedir/node"  "$basedir/../webpack/bin/webpack.js" "$@"  ret=$?else   node  "$basedir/../webpack/bin/webpack.js" "$@"  ret=$?fiexit $ret

    从代码中可以看到,会执行node_modules/webpack/bin/ 目录下的webpack.js,该文件主要代码如下:

    // 该函数用于执行命令,例如用于下载需要的包const runCommand = (command ,args) => {}// 判断该包是否安装const isInstalled = packageName => {}// 该函数用于执行webpack-cli包中bin目录下的cli.js文件const runCli = cli => {    const path = require("path");    const pkgPath = require.resolve(`${cli.package}/package.json`);    // pkgPath: D:\webpack\node_modules\webpack-cli\package.json    const pkg = require(pkgPath);    // pkg: webpack-cli的package.json 中的配置    // path.resolve(path.dirname(pkgPath), pkg.bin[cli.binName]): D:\webpack\node_modules\webpack-cli\bin\cli.js    require(path.resolve(path.dirname(pkgPath), pkg.bin[cli.binName]));}if (!cli.installed) {    // 判断 webpack-cli 是否安装    // 如果没有安装,询问用于是否安装 webpack-cli    ...    ...} else {    runCli(cli);}

    该文件最重要的函数就是 runCli ,该函数可以执行 webpack-cli 包中bin目录下的cli.js 文件,也就是说在此之前的步骤只是为了找到cli.js文件,在此之后,webpack-cli 才发挥作用。

    同时,webpack.js 文件也做了一些辅助判断,首先查看你是否安装了webpack-cli,如果没有安装,就会询问你是否安装(或手动安装)该包,如果选择不安装,那么程序运行到这就停止了。

    接着打开webpack-cli/bin/cli.js

    #!/usr/bin/env node"use strict";const importLocal = require("import-local");const runCLI = require("../lib/bootstrap");if (!process.env.WEBPACK_CLI_SKIP_IMPORT_LOCAL) {  // Prefer the local installation of `webpack-cli`  if (importLocal(__filename)) {    return;  }}process.title = "webpack";runCLI(process.argv);

    该文件的主要函数为 runCLI,而 runCLI 又来自 bootstrap.js 文件,打开 bootstrap.js 文件

    const WebpackCLI = require("./webpack-cli");const runCLI = async (args) => {  // Create a new instance of the CLI object  const cli = new WebpackCLI();  try {    await cli.run(args);  } catch (error) {    cli.logger.error(error);    process.exit(2);  }};module.exports = runCLI;

    注意,到了这里才真正用到了 webpack-cli 暴露出的接口,cli.run(args) 用来处理命令行参数,此时args参数为:

    [  'E:\nodejs\node.exe',  'D:\webpack\node_modules\webpack\bin\webpack.js',  '--config',  'wk.config.js']

    最终,从以上整个过程,我们可以知道 webpack-cli 是用来处理命令行参数,并通过参数构建 compiler 对象,然后才是对代码进行打包的过程。

    这同时也解决了前文提出的问题,为什么webpack-cli对于文件打包不是必需的。 既然 webpack-cli

    只是为了处理命令行参数,那我们同样可以构建自己的cli来处理参数,比如 lyx-cli。在第三方框架中,React 和 Vue(未使用Vite的版本)也没有使用 webpack-cli.

    Reference

    • 三面面试官:运行 npm run xxx 的时候发生了什么? - 掘金 (juejin.cn)

    • 命令行接口(CLI) | webpack 中文文档 (docschina.org)

    感谢各位的阅读,以上就是“webpack-cli在webpack打包中的作用是什么”的内容了,经过本文的学习后,相信大家对webpack-cli在webpack打包中的作用是什么这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

    免责声明:

    ① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

    ② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

    webpack-cli在webpack打包中的作用是什么

    下载Word文档到电脑,方便收藏和打印~

    下载Word文档

    猜你喜欢

    webpack-cli在webpack打包中的作用是什么

    这篇文章主要讲解了“webpack-cli在webpack打包中的作用是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“webpack-cli在webpack打包中的作用是什么”吧!web
    2023-06-30

    webpack Plugin的作用是什么

    这篇“webpack Plugin的作用是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“webpack Plugin的作
    2023-06-29

    webpack转vite的操作流程与问题是什么

    今天小编给大家分享一下webpack转vite的操作流程与问题是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一、全局安
    2023-07-05

    php中cli模式的作用是什么

    在PHP中,CLI(Command Line Interface)模式是指通过命令行界面执行PHP脚本的模式。CLI模式有以下作用:执行PHP脚本:可以在命令行中直接执行PHP脚本,而不需要通过Web服务器来运行。调试和测试:CLI模式可以
    php中cli模式的作用是什么
    2024-03-01

    redis-cli -a的作用是什么

    redis-cli -a 是用来指定 Redis 数据库的密码。通过在命令行中使用 -a 参数加上密码,可以在连接到 Redis 服务器时提供认证信息,确保连接成功。如果 Redis 服务器启用了密码认证,那么在连接时需要提供正确的密码才能
    redis-cli -a的作用是什么
    2024-04-09

    linux中redis-cli连接的作用是什么

    在Linux中,redis-cli是一个用于连接和与Redis服务器进行交互的命令行工具。通过redis-cli,用户可以执行各种操作,如数据查询、写入、删除等,以及查看服务器的状态信息。redis-cli还提供了一些有用的命令和选项,可以
    linux中redis-cli连接的作用是什么
    2024-03-14

    Java 中 Mapper 包的具体作用究竟是什么?(java中mapper包的作用是什么)

    在Java开发中,Mapper包起着至关重要的作用。它是Java应用程序架构中的一个重要组成部分,主要用于数据映射和数据库操作。Mapper包的主要作用之一是将数据库中的表结构与Java对象进行映射。通过Mapper包,开发人员可以将数据库中的表字段与Ja
    Java 中 Mapper 包的具体作用究竟是什么?(java中mapper包的作用是什么)
    Java2024-12-19

    python中time包的作用是什么

    这期内容当中小编将会给大家带来有关python中time包的作用是什么,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。python的数据类型有哪些?python的数据类型:1. 数字类型,包括int(整型)
    2023-06-14

    python中utils包的作用是什么

    utils包通常用于存放一些辅助函数或工具类,用于简化代码编写和提高代码的可重用性。这些工具函数和类通常不属于特定的业务逻辑,而是为其他模块或类提供支持。utils包中可能包含各种功能,例如文件操作、数据处理、网络请求、日期时间格式化等。总
    python中utils包的作用是什么
    2024-04-03

    编程热搜

    • Python 学习之路 - Python
      一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
      Python 学习之路 - Python
    • chatgpt的中文全称是什么
      chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
      chatgpt的中文全称是什么
    • C/C++中extern函数使用详解
    • C/C++可变参数的使用
      可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
      C/C++可变参数的使用
    • css样式文件该放在哪里
    • php中数组下标必须是连续的吗
    • Python 3 教程
      Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
      Python 3 教程
    • Python pip包管理
      一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
      Python pip包管理
    • ubuntu如何重新编译内核
    • 改善Java代码之慎用java动态编译

    目录