基于webpack创建plugin并发布npm包

news2024/9/21 0:39:20

webpack

1. 什么是webpack

webpack是一个模块化打包工具,

  • 可以将零散的js文件打包到一个js文件中
  • 可以使用loader对对模块的源代码进行转换 再打包
  • 可以支持载入任何类型的文件
  • 有代码拆解能力
    在这里插入图片描述

2.webpack中有两个重要的概念

loader: loader 让 webpack 能够去处理其他类型的文件,并将它们转换为有效 模块,以供应用程序使用,以及被添加到依赖图中。
plugin:插件目的在于解决 loader 无法实现的其他事

webpack 插件是一个具有 apply 方法的 JavaScript 对象。apply 方法会被 webpack compiler 调用,并且在 整个 编译生命周期都可以访问 compiler 对象。

3. 为什么基于webpack发布npm

利用了webpack的打包功能,将多个模块和依赖项打包成一个或多个bundle同时还有webpack中的
source-map 映射源文件····

npm

1. 什么是npm

npm 是一个包管理工具,允许用户从npm服务器上下载别人编写的第三方包到本地使用,允许自己编写的包供别人使用
npm常见的安装命令

npm i 包的名字@<版本号>  // 版本号可省略

安装完成的包会在node_modules 目录下

2.创建包的过程

  • npm init --yes 初始化一个 package.json

package.json 用于定义包的属性常见的有
version 包的版本号
description 包的描述
script 自动化脚本语言…

  • npm install webpack webpack-cli --save

【 webpack 是 webpack 的核心模块 webpack-cli 是 Webpack 的 CLI 程序,用来在命令行中调用 webpack】

  • npx webpack --version
    -npx webpack进行打包构建 打包之后的文件在 dist 文件夹下

3.webpack的相关配置

上面的代码中我们安装了webpack webpack cli 说明我们是基于webpack进行的包的创建
下面我们进行webpack的相关配置

webpack的相关概念

  • mode : 选择打包的环境
  • entry:入口
  • output:出口
  • loader: 用于对模块的源代码进行转换
  • plugin: 用于解决 loader 无法解决的事情 –

4.基于webpack中的apply实现插件并暴露

webpack官网 重点
官网中有说到

//webpack 插件是一个具有 apply 方法的 JavaScript 对象。apply 方法会被 webpack compiler 调用,并且在 整个 编译生命周期都可以访问 compiler 对象
//ConsoleLogOnBuildWebpackPlugin.js  插件
onst pluginName = 'ConsoleLogOnBuildWebpackPlugin';

class ConsoleLogOnBuildWebpackPlugin {
  apply(compiler) {
    compiler.hooks.run.tap(pluginName, (compilation) => {
      console.log('webpack 构建正在启动!');
    });
  }
}

module.exports = ConsoleLogOnBuildWebpackPlugin;

5.webpack.config.js中的相关配置

// webpack.config.js 配置
const HtmlWebpackPlugin = require('html-webpack-plugin');
const webpack = require('webpack'); // 访问内置的插件
const path = require('path');

module.exports = {
  entry: './path/to/my/entry/file.js',
  output: {
    filename: 'my-first-webpack.bundle.js',
    path: path.resolve(__dirname, 'dist'),
  },
  module: {
    rules: [
      {
        test: /\.(js|jsx)$/,
        use: 'babel-loader',
      },
    ],
  },
  plugins: [
    new webpack.ProgressPlugin(),
    new HtmlWebpackPlugin({ template: './src/index.html' }),
  ],
};

三 发布包

首先需要注册npm npm官网
在对应的插件目录下登录:执行npm login

npm login

登录npm账号,登录前先检查一下npm源,很多人开发是已将把npm 源换成了淘宝镜像或者自己公司内部的,但是发布需要npm本身的源:https://registry.npmjs.org/

执行成功之后会给你注册的邮箱发布一个一次性的秘密输入之后登录
在这里插入图片描述
在这里插入图片描述
显示Logged… 表示登录成功
登录成功之后执行 npm puiblish实现发布

npm puiblish // 发布包

显示下面表示发布成功在这里插入图片描述

// 报错
PS E:\practice-once-a-day\bundlesize-webpack-plugin> npm publish
npm notice Publishing to https://registry.npmjs.org with tag latest and default access
npm ERR! code E403
npm ERR! 403 403 Forbidden - PUT https://registry.npmjs.org/08-webpack-npm - 08-webpack-npm cannot be republished until 24 hours have passed.
npm ERR! 403 In most cases, you or one of your dependencies are requesting
npm ERR! 403 a package version that is forbidden by your security policy, or
npm ERR! 403 on a server you do not have access to.
npm ERR! A complete log of this run can be found in: C:\Users\11\AppData\Local\npm-cache\_logs\2024-07-11T12_27_54_985Z-debug-0.log

原因:

等待 24 小时:如果你之前已经发布了 08-webpack-npm 的 1.0.0 版本,你需要等待 24 小时后才能再次发布同一版本。
发布新版本:如果你想更新 08-webpack-npm 包,考虑更改版本号,遵循语义化版本控制规则,例如发布 1.0.1 或 1.1.0。

发布packege包到npm

项目根路径输入 npm login 后按要求填写账号密码,然后输入 npm publish 发布包。

其他

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1919204.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

paddla模型转gguf

在使用ollama配置本地模型时&#xff0c;只支持gguf格式的模型&#xff0c;所以我们首先需要把自己的模型转化为bin格式&#xff0c;本文为paddle&#xff0c;onnx&#xff0c;pytorch格式的模型提供说明&#xff0c;safetensors格式比较简单请参考官方文档&#xff0c;或其它教…

Tomcat优化和动静分离

Tomcat优化和动静分离 一、Tomcat优化 Tomcat&#xff1a;自身优化、内核优化和jvm优化 tomcat的并发处理能力不强&#xff0c;大项目一般不使用tomcat作为转发的中间件&#xff08;k8s集群、Python、rubby&#xff09;&#xff0c;小项目会使用&#xff08;内部使用&#x…

Python功能制作之获取CSDN所有发布文章的对应数据

大家好&#xff0c;今天我要分享的是一个实用的Python脚本&#xff0c;它可以帮助你批量获取CSDN博客上所有发布文章的相关数据&#xff0c;并将这些数据保存到Excel文件中。此外&#xff0c;脚本还会为每篇文章获取一个质量分&#xff0c;并将这个分数也记录在Excel中。让我们…

探索IP形象设计:快速掌握设计要点

随着市场竞争的加剧&#xff0c;越来越多的企业开始关注品牌形象的塑造和推广。在品牌形象中&#xff0c;知识产权形象设计是非常重要的方面。在智能和互联网的趋势下&#xff0c;未来的知识产权形象设计可能会更加关注数字和社交网络。通过数字技术和社交媒体平台&#xff0c;…

Nuxt3封装网络请求 useFetch $fetch

前言&#xff1a; 刚接触、搭建Nuxt3项目的过程还是有点懵的&#xff0c;有种摸石头过河的感觉&#xff0c;对于网络请求这块&#xff0c;与之前的Vue3项目有所区别&#xff0c;在Vue项目通常使用axios这个库进行网络请求&#xff0c;但在Nuxt项目并不推荐&#xff0c;因为有内…

SAP SD销售寄售转销售订单简介

前面的几篇文章都演示了寄售模式下的系统操作的步骤和后台相关配置的演示,本文将演示客户寄售库存的消耗。 还是看下下图中的寄售四种的订单类型,我们演示的就是寄售的消耗,同样也可以理解为我们借出的东西转换成了销售订单买给客户的这的场景。 首先还是从创建销售订单开…

【刷题汇总 -- 最长回文子串、买卖股票的最好时机(一)、[NOIP2002 普及组] 过河卒】

C日常刷题积累 今日刷题汇总 - day0101、最长回文子串1.1、题目1.2、思路1.3、程序实现 2、买卖股票的最好时机(一)2.1、题目2.2、思路2.3、程序实现2.4、程序实现 -- 优化 3、[NOIP2002 普及组] 过河卒3.1、题目3.2、思路3.3、程序实现 -- dp 4、题目链接 今日刷题汇总 - day0…

全球首款集成GPT-4o的智能眼镜AirGo Vision:AI眼镜的未来

引言 在人工智能和大模型技术迅猛发展的今天&#xff0c;AI硬件产品逐渐走入人们的生活。继Meta Ray-Ban智能眼镜之后&#xff0c;Solos公司在最近的香港智能眼镜峰会上发布了全球首款集成GPT-4o的智能眼镜AirGo Vision。本文将深入探讨这款AI智能眼镜的功能、技术特点以及其在…

Docker 使用基础(3)—容器

&#x1f3ac;慕斯主页&#xff1a;修仙—别有洞天 ♈️今日夜电波&#xff1a;秒針を噛む—ずっと真夜中でいいのに。 0:34━━━━━━️&#x1f49f;──────── 4:20 &#x1f504; ◀️ ⏸ …

轻松搭建 VirtualBox + Vagrant + Linux 虚拟机

一、准备工作 首先&#xff0c;我们来了解一下搭建 VirtualBox Vagrant Linux 虚拟机所需的软件准备工作。 VirtualBox 的下载地址&#xff1a;您可以通过访问https://www.virtualbox.org/wiki/Downloads获取适用于您系统的版本。 Vagrant 的下载地址&#xff1a;前往http…

麦克风领夹式的哪个牌子最好,无线领夹麦克风十大品牌

在直播和自媒体行业迅速崛起的今天&#xff0c;无线麦克风因其便携性和实用性成为了视频制作和直播带货中不可或缺的工具。面对市场上从几十元到几千元不等的无线麦克风&#xff0c;作为一位资深直播运营专家&#xff0c;我深知选择合适的设备对于提升直播质量和观众体验的重要…

【简历】南京某大学顶级211硕士:拿offer可能性低

注&#xff1a;为保证用户信息安全&#xff0c;姓名和学校等信息已经进行同层次变更&#xff0c;内容部分细节也进行了部分隐藏 简历说明 这份简历的背景是南京的一所顶级211的硕士,从学校背景来讲呢,求职目标就是大厂的秋招&#xff0c;但是因为项目描述的亮点比较少&#x…

JavaScript青少年简明教程:为何学习JavaScript及JavaScript简介

JavaScript青少年简明教程&#xff1a;为何学习JavaScript及JavaScript简介 JavaScript最初是为web浏览器&#xff08;前端开发&#xff09;设计的。它可以在所有现代浏览器中运行&#xff0c;包括Chrome, Firefox, Safari, Edge等。 这意味着JavaScript代码可以在任何能运行…

three完全开源扩展案例02-跳动的音乐

更多案例尽在https://threelab.cn/ 演示地址 import * as THREE from "three"; import { OrbitControls } from "three/examples/jsm/controls/OrbitControls.js";let mediaElement; let analyser; let scene; let camera; let renderer; let controls; …

STM32寄存器开发基础-点亮LED灯(讲解GPIO口输出)

文章目录 一、前言二、系列文章三、如何学习&#xff1f;四、STM32编程-控制LED灯4.1 STM32开发板4.2 原理图4.3 STM32的GPIO口4.4 开时钟4.5 配置GPIO模式的寄存器4.6 编写LED灯的初始化代码4.7 GPIO口控制输出寄存器4.8 一个完整的闪光灯程序代码 五、关于寄存器是问题 一、前…

Vue中实现在线画流程图实现

概述 最近在调研一些在线文档的实现&#xff0c;包括文档编辑器、在线思维导图、在线流程图等&#xff0c;前面的文章基于语雀编辑器的在线文档编辑与查看实现了文档编辑器。在本文&#xff0c;分享在Vue框架下基于metaeditor-mxgraph实现在线流程图。 实现效果 实现 1. 添加…

iPhone 16 Pro系列将标配潜望镜头:已开始生产,支持5倍变焦

ChatGPT狂飙160天&#xff0c;世界已经不是之前的样子。 更多资源欢迎关注 7月6日消息&#xff0c;据DigiTimes最新报道&#xff0c;苹果将在iPhone 16 Pro中引入iPhone 15 Pro Max同款5倍光学变焦四棱镜潜望镜头。 报道称&#xff0c;目前苹果已经将模组订单交至大立光电和玉…

MC0246王国傀儡师

目录 题目描述 格式 样例 备注 运行限制 原题链接 代码思路 题目描述 在一个奇幻的王国中&#xff0c;存在着一个名叫小码哥的魔法师。小码哥手下收藏着 n 个傀儡&#xff0c;他靠着手下的傀儡演出赖以生存。因此&#xff0c;傀儡的魅力度与他的生存息息相关。他为每个…

(CVPR-2024)SwiftBrush:具有变分分数蒸馏的单步文本到图像扩散模型

SwiftBrush&#xff1a;具有变分分数蒸馏的单步文本到图像扩散模型 Paper Title&#xff1a;SwiftBrush: One-Step Text-to-Image Diffusion Model with Variational Score Distillation Paper 是 VinAI Research 发表在 CVPR 24 的工作 Paper地址 Code:地址 Abstract 尽管文本…

EXSI 实用指南 2024 -编译环境 Mac OS 安装篇(一)

1. 引言 在现代虚拟化技术的快速发展中&#xff0c;VMware ESXi 作为领先的虚拟化平台&#xff0c;凭借其高性能、稳定性和丰富的功能&#xff0c;广泛应用于企业和个人用户。ESXi 能有效地提高硬件资源利用率&#xff0c;并简化 IT 基础设施的管理。然而&#xff0c;如何在 V…