npm包發(fā)布和刪除的超詳細教程
一.新建npm項目包
1.新建目錄包yuan_mytools
注意:在新建npm項目包的時候,可以先去官網(wǎng)搜一下是否有重名的,不允許重名?。。?/p>

新建項目包yuan-mytools,創(chuàng)建src目錄,并在src目錄中創(chuàng)建自定義模塊(我的自定義模塊是dateFormat和htmlEscape),并在項目包的根目錄下創(chuàng)建入口文件yuan.js和README.md文檔

2.創(chuàng)建包管理配置文件package.json
在項目yuan-mytools的根目錄運行終端命令,快速創(chuàng)建package.json
npm init -y
注意:上述命令只能在英文的目錄下成功運行!所以,項目文件夾的名稱一定要使用英文命名,不要使用中文,不能出現(xiàn)空格。
3.配置package.json
(1)name :npm項目包名,發(fā)布到npm時包名取的這個name;
(2)version :版本號,第一次發(fā)布,版本號可以設(shè)置為@1.0.0,更新npm包時必須修改一個更高的版本號后才能成功發(fā)布到npm;
(3)description :包的描述,發(fā)布到npm后你搜索該npm包時,在搜索聯(lián)想列表里會顯示在包名的下方,作為描述說明;
(4)main :入口文件路徑,在你通過import或require引用該npm包時就是引入的該路徑的文件;
(5)keywords:關(guān)鍵字,在官網(wǎng)搜索該包時,使用這些關(guān)鍵字可以搜索出來;
(6)license:開源協(xié)議,默認是ISC;

4.實現(xiàn)格式化日期的功能
dateFormat.js
// 定義格式化時間的函數(shù)
function dateFormat(dataStr) {
const date = new Date(dataStr)
const year = date.getFullYear()
// 月份是從0-11,需要加一
const month = padZero(date.getMonth() + 1)
const day = padZero(date.getDate())
const hour = padZero(date.getHours())
const minute = padZero(date.getMinutes())
const second = padZero(date.getSeconds())
// 使用模板字符串進行拼接
return `${year}-${month}-${day} ${hour}:${minute}:${second}`
}
//補零函數(shù)
function padZero(date) {
return date > 9 ? date : '0' + date
}
// 對外共享該模塊
module.exports = {
dateFormat
}5.實現(xiàn)html特殊字符的轉(zhuǎn)義和還原
(1)轉(zhuǎn)義html中的特殊字符,包括<、>、$、"等
// 轉(zhuǎn)義html中的特殊字符
function htmlEscape(htmlStr) {
return htmlStr.replace(/<|>|&|"/g, (match) => {
switch (match) {
case '<':
return '<'
case '>':
return '>'
case '"':
return '"'
case '&':
return '&'
}
})
}(2)還原h(huán)tml中的特殊字符,包括<、>、"、$amp;等
// 還原h(huán)tml中的特殊字符function htmlUnEscape(htmlStr) { return htmlStr.replace(/<|>|"|&/g, (match) => { switch (match) { case '<': return '<' case '>': return '>' case '"': return '"' case '&': return '&' } })}// 對外共享模塊htmlEscape和htmlUnEscape模塊module.exports = { htmlEscape, htmlUnEscape}6.入口文件yuan.js
在入口文件yuan.js中導(dǎo)入兩個模塊,并且結(jié)構(gòu)對象之后對外共享
const date = require('./src/dateFormat')
const escape = require('./src/htmlEscape')
module.exports = {
...date,
...escape
}7.編寫README.md說明文檔,包括安裝方式、導(dǎo)入方式、格式化時間、轉(zhuǎn)義 HTML 中的特殊字符、還原 HTML 中的特殊字符、開源協(xié)議
## 安裝
```
npm install yuan-mytools
```
## 導(dǎo)入
```js
const yuan = require('./yuan-mytools')
```
## 格式化時間
```js
const date = new Date()
// 調(diào)用dateFormat對時間進行格式化
console.log(yuan.dateFormat(date))
```
## 轉(zhuǎn)義html中的特殊字符
```js
const str = '<h1 title="abc">這是h1標(biāo)簽<span>123 </span></h1>'
// 調(diào)用htmlEscape對特殊字符進行轉(zhuǎn)義
const newStr = yuan.htmlEscape(str)
// 轉(zhuǎn)換的結(jié)果為 <h1 title="abc">這是h1標(biāo)簽<span>123&nbsp;</span></h1>
console.log(newStr)
```
## 還原h(huán)tml總的特殊字符
```js
const str = '<h1 title="abc">這是h1標(biāo)簽<span>123 </span></h1>'
const newStr = yuan.htmlEscape(str)
console.log(newStr)
// 調(diào)用htmlUnEscape對特殊字符進行還原
console.log(yuan.htmlUnEscape(newStr))
```
## 開源協(xié)議
ISC注意:在npm官網(wǎng)發(fā)布包之后,README文檔將會作為介紹放在首頁
二.發(fā)布npm包
1.注冊npm賬號
- 訪問 https://www.npmjs.com/ 網(wǎng)站,點擊 sign up 按鈕,進入注冊用戶界面
- 填寫賬號相關(guān)的信息:Full Name、Public Email、Username、Password
- 點擊 Create an Account 按鈕,注冊賬號
- 登錄郵箱,點擊驗證鏈接,進行賬號的驗證
2.登錄 npm 賬號
npm 賬號注冊完成后,可以在終端中執(zhí)行 npm login 命令,依次輸入用戶名、密碼、郵箱后,即可登錄成功。
注意:在運行 npm login 命令之前,必須先把下包的服務(wù)器地址切換為 npm 的官方服務(wù)器。否則會導(dǎo)致發(fā)布包失?。?/p>

3.把包發(fā)布到 npm 上
將終端切換到包的根目錄之后,運行 npm publish 命令,即可將包發(fā)布到 npm 上(注意:包名不能雷同)。

三.刪除已發(fā)布的包
1.運行 npm unpublish 包名 --force 命令,即可從 npm 刪除已發(fā)布的包。


注意:
- npm unpublish 命令只能刪除 72 小時以內(nèi)發(fā)布的包
- npm unpublish 刪除的包,在 24 小時內(nèi)不允許重復(fù)發(fā)布
- 發(fā)布包的時候要慎重,盡量不要往 npm 上發(fā)布沒有意義的包!
補充:項目中多余的npm包怎么快速刪除?
在公司中,我們大部分都是多人共同開發(fā)和長時間維護一個項目,但是有時候我們會發(fā)現(xiàn)有很多已經(jīng)廢棄的npm 包存在 package.json 中,我們想要刪除,但是又不能盲目的刪除?那么 depcheck 它來了。
如何使用呢
第一步
全局安裝:
npm install depcheck -g
第二步
項目更目錄下執(zhí)行 depcheck (這里拿我們自己的項目來做的測試),執(zhí)行之后,根據(jù)自己得到的結(jié)果人工刪除即可
Unused dependencies * @xkeshi/vue-qrcode * any-promise * backpack-core * cookie-universal-nuxt * tls * to * vue-loader * vue-meta-info Unused devDependencies * @babel/cli * @babel/preset-es2015 * @babel/preset-react * @babel/preset-stage-0 * @babel/register * @nuxtjs/sentry * axios-mock-adapter * babel-eslint * babel-loader * babel-plugin-component * child_process * css-loader * element-theme * element-theme-chalk * es3-compatible-webpack-plugin * es3ify-loader * eslint-friendly-formatter * eslint-loader * eslint-plugin-html * express * fs * http-proxy-middleware * jsencrypt * lang * net * node-sass * post-loader * qs * sass-loader * vue-style-loader * webpack-cli Missing dependencies * vue-no-ssr: ./.nuxt/components/no-ssr.js * unfetch: ./.nuxt/client.js * consola: ./.nuxt/client.js * nuxt_plugin_route_338f5eda: ./.nuxt/index.js * nuxt_plugin_main_6a83762f: ./.nuxt/index.js * nuxt_plugin_http_6a8178fe: ./.nuxt/index.js * nuxt_plugin_qrcode_7ec40a18: ./.nuxt/index.js * nuxt_plugin_aliyunosssdkmin_02f21098: ./.nuxt/index.js * nuxt_plugin_aliyunuploadsdk131min_c379eff6: ./.nuxt/index.js * vue-router: ./.nuxt/router.js * node-fetch: ./.nuxt/server.js * vuex: ./.nuxt/store.js * ~: ./assets/more-editor/more-editor.js * resize-observer-polyfill: ./component/util/resizeEvent.js * co: ./pages/circle/component/dakaEditor/editor.vue
總結(jié)
到此這篇關(guān)于npm包發(fā)布和刪除的文章就介紹到這了,更多相關(guān)npm包發(fā)布刪除內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
詳解nodejs實現(xiàn)本地上傳圖片并預(yù)覽功能(express4.0+)
本篇文章主要介紹了nodejs實現(xiàn)本地上傳圖片并預(yù)覽功能(express4.0+) ,具有一定的參考價值,有興趣的可以了解一下2017-06-06
Express URL跳轉(zhuǎn)(重定向)的實現(xiàn)方法
Express是一個基于Node.js實現(xiàn)的Web框架,其響應(yīng)HTTP請求的response對象中有兩個用于URL跳轉(zhuǎn)方法res.location()和res.redirect(),使用它們可以實現(xiàn)URL的301或302重定向。2017-04-04
用nodejs實現(xiàn)json和jsonp服務(wù)的方法
本篇文章主要介紹了用nodejs實現(xiàn)json和jsonp服務(wù)的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-08-08
輕松創(chuàng)建nodejs服務(wù)器(1):一個簡單nodejs服務(wù)器例子
這篇文章主要介紹了一個簡單nodejs服務(wù)器例子,本文實現(xiàn)了一個簡單的hello world例子,并展示如何運行這個服務(wù)器,需要的朋友可以參考下2014-12-12
node.js實現(xiàn)批量修改git項目的數(shù)據(jù)源(步驟詳解)
文章介紹了如何使用Node.js腳本批量修改大型項目中各個項目的Git地址域名,通過引入模塊、聲明域名常量、定義遍歷函數(shù)和修改目錄等步驟,實現(xiàn)一次性批量修改,從而節(jié)省時間和精力2024-11-11
node.js中實現(xiàn)kindEditor圖片上傳功能的方法教程
最近在做一個類似于論壇的系統(tǒng),帖子需要進行圖文并茂的顯示,所以用到了富文本編輯器:kindeditor,下面這篇文章主要給大家介紹了在node.js中實現(xiàn)kindEditor圖片上傳功能的方法教程,需要的朋友可以參考借鑒,下面來一起看看吧。2017-04-04

