【實操】2023年npm組件庫的創建發布流程

2022年的實踐為基礎,2023年我再建一個組件庫【ZUI】。步驟回顧:

2022年的npm組件包的發布刪除教程_npm i @ant-design/pro-components 怎么刪除_啥咕啦嗆的博客-CSDN博客

1.在gitee上創建一個項目,相信你是會的

?

2.創建初始化項目,看吧,時隔一年坑來了,截圖為證:

?提示很明確,node版本低了,使用nvm切換一下,之前有說過,nvm的安裝使用

?報錯又來了

Command vue init requires a global addon to be installed.
Please run yarn global add @vue/cli-init and try again.

解決方法:npm install -g @vue/cli-init

?額,算了自己初始化項目吧:

1.新建文件夾src及基礎內容:

建文件夾assrts放圖片資源,

放入圖片zui.svg

?

建components放組件文件庫,

在componets文件夾里新增一個zTag.vue文件,內容如下:

<script>export default {name: "zTag",props:{text:{type: String,default: 'Tag'},color:{type: String,default: '#1676FF'},bgColor:{type: String,default: '#e8f1ff'},borColor:{type: String,default: '#d0e4ff'},},render(h) {const { color, bgColor, borColor } = this;const classes = ['z-tag',];return h('span',{'class': classes,'style': { backgroundColor: bgColor,color: color,borderColor: borColor },domProps: {innerHTML: this.$slots.default[0].text},})}}
</script><style scoped>.z-tag{background-color: #e8f1ff;border-color: #d0e4ff;display: inline-block;height: 32px;padding: 0 10px;line-height: 30px;font-size: 12px;color: #1676FF;border-width: 1px;border-style: solid;border-radius: 4px;box-sizing: border-box;white-space: nowrap;}
</style>

建App.vue內容如下:

<template><div id="app"><img src="./assets/zui.svg" width="200px"><z-tag color="#E02020" bg-color="#e0202026" bor-color="#e0202033">標簽</z-tag></div>
</template><script>
import zTag from './components/zTag'
export default {name: 'app',components: {zTag,},data () {return {}}
}
</script><style>
#app{text-align: center;
}
</style>

建index.js文件內容如下:

import zTag from './components/zTag'const components = [zTag, 
]
const install = function (Vue) {if (install.installed) return// 遍歷注冊全局組件components.map(component => Vue.component(component.name, component))// 這一步判斷window.Vue是否存在,因為直接引用vue.min.js, 它會把Vue綁到Window上,我們直接引用打包好的js才能正常跑起來。if (typeof window !== 'undefined' && window.Vue) {install(window.Vue)}
}
export default install

建main.js內容如下:

import Vue from 'vue'
import App from './App.vue'import zTag from '../src/components/zTag'const components = [zTag, 
]
const install = function (Vue) {if (install.installed) return// 遍歷注冊全局組件components.map(component => Vue.component(component.name, component))// 這一步判斷window.Vue是否存在,因為直接引用vue.min.js, 它會把Vue綁到Window上,我們直接引用打包好的js才能正常跑起來。if (typeof window !== 'undefined' && window.Vue) {install(window.Vue)}
}new Vue({el: '#app',render: h => h(App)
})
export default install;

?2.新建index.html

<!DOCTYPE html>
<html lang="en"><head><meta charset="utf-8"><title>zui</title></head><body><div id="app"></div><script src="/dist/zui.js"></script></body>
</html>

3.新建package.json

{"name": "zui-vue2","description": "vue2.0 components","version": "0.0.1","author": "zhouzhenhan <1659725767@qq.com>","license": "MIT","private": false,"main": "dist/zui.js","scripts": {"dev": "cross-env NODE_ENV=development webpack-dev-server --open --hot","build": "cross-env NODE_ENV=production webpack --progress --hide-modules"},"dependencies": {"vue": "^2.5.11"},"browserslist": ["> 1%","last 2 versions","not ie <= 8"],"devDependencies": {"babel-core": "^6.26.0","babel-loader": "^7.1.2","babel-preset-env": "^1.6.0","babel-preset-stage-3": "^6.24.1","cross-env": "^5.0.5","css-loader": "^0.28.7","file-loader": "^1.1.4","vue-loader": "^13.0.5","vue-template-compiler": "^2.4.4","webpack": "^3.6.0","webpack-dev-server": "^2.9.1"}
}

4.新建webpack.config.js

var path = require("path");
var webpack = require("webpack");
const NODE_ENV = process.env.NODE_ENV;module.exports = {entry: NODE_ENV==='development'?"./src/main.js":"./src/index.js" ,output: {path: path.resolve(__dirname, "./dist"),publicPath: "/dist/",filename: "zui.js", // npm run build生成的文件名library: "zui", // 指定的就是你使用require時的模塊名libraryTarget: "umd", // 指定輸出格式// umdNamedDefine: true // 會對 UMD 的構建過程中的 AMD 模塊進行命名。否則就使用匿名的 define},module: {rules: [{test: /\.css$/,use: ["vue-style-loader", "css-loader"]},{test: /\.vue$/,loader: "vue-loader",options: {loaders: {less: ["vue-style-loader", "css-loader", "less-loader"]}}},{test: /\.less$/,use: ["vue-style-loader", "css-loader", "less-loader"]},{test: /\.js$/,loader: "babel-loader",exclude: /node_modules/},{test: /\.(png|jpg|gif|svg)$/,loader: "file-loader",options: {name: "[name].[ext]?[hash]"}}]},resolve: {alias: {vue$: "vue/dist/vue.esm.js"},extensions: ["*", ".js", ".vue", ".json"]},devServer: {historyApiFallback: true,noInfo: true,overlay: true},performance: {hints: false},
};if (process.env.NODE_ENV === "production") {module.exports.plugins = (module.exports.plugins || []).concat([new webpack.DefinePlugin({"process.env": {NODE_ENV: '"production"'}}),new webpack.optimize.UglifyJsPlugin({sourceMap: false,compress: {warnings: false}}),new webpack.LoaderOptionsPlugin({minimize: true})]);
}

然后npm install,npm run dev ,npm run build.

看到運行后顯示如下,代表成功了:

?3.發布組件庫

npm whoami 查看是否有npm登錄

npm login 登錄

輸入name,輸入passwod,然后輸入郵箱,后續升級版本郵件都會有通知,最后輸入郵箱的一次性密碼。

登錄成功后,就可以npm publish --otp=XXXXXX

?可以看到發布成功!~

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/37182.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/37182.shtml
英文地址,請注明出處:http://en.pswp.cn/news/37182.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

泛型類接口方法學習

一、泛型 1 概念 泛型(Generics)&#xff0c;廣泛的類型。最大用途是給集合容器添加標簽&#xff0c;讓開發人員知道容器里面放到是什么類型&#xff0c;并且自動對放入集合的元素進行類型檢查。 類比實參和形參&#xff0c;我們在對方法中的變量操作時&#xff0c;并沒有指…

深入理解高并發編程 - 深度解析 ThreadPoolExecutor 類

ThreadPoolExecutor 是 Java 標準庫中用于創建和管理線程池的核心類之一。它實現了 ExecutorService 接口&#xff0c;提供了豐富的線程池管理功能。下面將通過源碼解析來深入了解 ThreadPoolExecutor 類的工作原理和各個重要部分。 可以在 Java 源代碼中找到 ThreadPoolExecu…

【新品發布】ChatWork企業知識庫系統源碼

系統簡介 基于前后端分離架構以及Vue3、uni-app、ThinkPHP6.x、PostgreSQL、pgvector技術棧開發&#xff0c;包含PC端、H5端。 ChatWork支持問答式和文檔式知識庫&#xff0c;能夠導入txt、doc、docx、pdf、md等多種格式文檔。 導入數據完成向量化訓練后&#xff0c;用戶提問…

兩個pdf合并成一個pdf怎么合并?這幾個方法值得推薦

兩個pdf合并成一個pdf怎么合并&#xff1f;pdf文件的合并是一個很常見的需求&#xff0c;特別是在處理工作文件或學習資料時。為了更好的幫助你了解如何將兩個pdf文件合并成一個&#xff0c;下面就給大家詳細介紹幾種合并方法。 方法一&#xff1a;使用迅捷PDF轉換器 這是一款…

小紅書如何打造爆款引流吸粉?11個秘訣助你秒變達人!

在這個充滿信息和內容的時代&#xff0c;小紅書以其獨特的社交平臺特性和個性化內容吸引了眾多用戶。今天&#xff0c;我們就來揭秘小紅書關注戰略&#xff0c;了解如何在這個平臺上打造獨特的內容體驗&#xff0c;與用戶建立更親近的連接。#小紅書# 1、定位清晰&#xff0c;找…

【論文閱讀】基于深度學習的時序預測——Pyraformer

系列文章鏈接 論文一&#xff1a;2020 Informer&#xff1a;長時序數據預測 論文二&#xff1a;2021 Autoformer&#xff1a;長序列數據預測 論文三&#xff1a;2022 FEDformer&#xff1a;長序列數據預測 論文四&#xff1a;2022 Non-Stationary Transformers&#xff1a;非平…

Python技巧----解壓序列/可迭代對象賦值給多個變量

1 、解壓序列賦值給多個變量 我們這里說的不是正常情況的一一賦值比如下面 >>> data = [ ACME, 5, 9, (2012, 12, 1) ] >>> name, shares, price, date = data >>> name ACME

頁面跳轉和兩個頁面之間的數據傳遞-鴻蒙ArkTS

頁面跳轉和兩個頁面之間的數據傳遞-ArkTS 頁面跳轉和兩個頁面之間的數據傳遞-ArkTS關于router的使用**跳轉頁面的實現方式。**頁面接受跳轉傳遞的參數頁面返回及攜帶參數效果代碼Index頁面Second頁面 參考資料 頁面跳轉和兩個頁面之間的數據傳遞-ArkTS 本篇文章主要是對兩個頁面…

TiDB在科捷物流神州金庫核心系統的應用與實踐

業務背景 北京科捷物流有限公司于2003年在北京正式成立&#xff0c;是ISO質量管理體系認證企業、國家AAAAA級物流企業、海關AEO高級認證企業&#xff0c;注冊資金1億元&#xff0c;是中國領先的大數據科技公司——神州控股的全資子公司。科捷物流融合B2B和B2C的客戶需求&#…

網易有道押寶大模型,打響智能硬件突圍戰

本文轉載自產業科技 自今年開年以來&#xff0c;AI大模型這場火勢能不減&#xff0c;如今已燃到教育領域。 7月26日&#xff0c;網易有道舉辦了“powered by子曰”教育大模型應用成果發布會&#xff0c;推出國內首個教育領域垂直大模型“子曰”&#xff0c;并一口氣發布了基于…

conda - 調研介紹

介紹: conda 是一個工具, 也是一個可執行命令, 其核心功能是管理包與環境. conda 支持多種語言, 用來管理Python包是綽綽有余的. 這里注意區分conda和pip, pip命令可以在任何環境中安裝Python包, 而conda則是在conda環境中安裝任何語言包. 接觸過的conda主要有miniconda與anac…

matlab使用教程(15)—圖論基礎

1.有向圖和無向圖 1.1什么是圖&#xff1f; 圖是表示各種關系的節點和邊的集合&#xff1a; ? 節點 是與對象對應的頂點。 ? 邊 是對象之間的連接。 ? 圖的邊有時會有權重 &#xff0c;表示節點之間的每個連接的強度&#xff08;或一些其他屬性&#xff09;。 這些定…

MySQL8.xx一主兩從復制安裝與配置

搭建環境: 查看系統版本cat /etc/redhat-release [rootwww tools]# cat /etc/redhat-release CentOS Linux release 7.9.2009 (Core) 查看內核版本cat /proc/version 目標: 一主兩從 主機IP 主機名稱 端口 搭建環境 安裝目錄192.168.1.100 docker…

MobaXterm sftp 不能拖拽文件夾了?

原因是我把mobaxterm設置成Windows管理員權限運行了,結果就不能拖動文件。把管理員權限去掉就恢復正常了。 原因是我把mobaxterm設置成Windows管理員權限運行了,結果就不能拖動文件。把管理員權限去掉就恢復正常了。 原因是我把mobaxterm設置成Windows管理員權限運行了,結果就不…

19.正則表達式

19.1什么是正則表達式 ●正則表達式( Regular Expression) 是用于匹配字符串中字符組合的模式。在JavaScript中&#xff0c; 正則表達式也是對象 ●通常用來查找、替換那些符合正則表達式的文本&#xff0c;許多語言都支持正則表達式 ●正則表達式在JavaScript中的使用場景: …

什么是MCU芯片?分類有哪些?與MPU、SoC的區別

1. MCU芯片 MCU&#xff0c;全稱為微控制單元&#xff0c;可以看作是CPU頻率和規格的縮減。它整合了計數器、內存、USB和A/D轉換等功能&#xff0c;形成了一個芯片級的計算機。MCU的重要性僅次于CPU&#xff0c;廣泛應用于各種應用場景&#xff0c;如校園卡、身份證、家用電器…

《golang設計模式》第二部分·結構型模式-02-橋接模式(Bridge)

文章目錄 1. 概念1.1 角色1.2 類圖 2. 代碼示例2.1 設計2.1 代碼2.2 類圖 1. 概念 客戶端調用橋接接口實現原有功能和擴展功能的組合 1.1 角色 Implementor&#xff08;實施者&#xff09;&#xff1a; 具體實施者的抽象&#xff0c;可以是一個接口。 Concrete Implementor&…

8.15號經典模型復習筆記

文章目錄 Deep Residual Learning for Image Recognition(CVPR2016)方法 Densely Connected Convolutional Networks&#xff08;CVPR2017&#xff09;方法 EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks&#xff08;ICML2019&#xff09;方法 Re…

使用維納過濾器消除駕駛艙噪音(Matlab代碼實現)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;歡迎來到本博客????&#x1f4a5;&#x1f4a5; &#x1f3c6;博主優勢&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客內容盡量做到思維縝密&#xff0c;邏輯清晰&#xff0c;為了方便讀者。 ??座右銘&a…

信息論、推理和機器學習算法之間交叉的經典例子

信息論、推理和機器學習算法之間交叉的經典例子: 熵和信息增益在決策樹學習中的應用。信息增益利用熵的概念來評估特征的分類能力,從而指導決策樹的增長。 交叉熵在神經網絡訓練中的廣泛使用。它結合信息論與最大似然推斷,用于度量預測分布與真實分布之間的距離。 變分推斷常被…