一分鐘教你發佈npm包

文章簡介: 一、摘要:什麼是npm? 二、如何發佈一個本身的npm包 三、發佈錯誤集錦javascript

摘要:什麼是npm?

npm是javascript著名的包管理工具,是前端模塊化下的一個標誌性產物 簡單地地說,就是經過npm下載模塊,複用已有的代碼,提升工做效率 和移動端開發中,iOS使用的Cocoapods,Android使用的maven有殊途同歸之妙。前端

如何發佈一個本身的npm包

一、建立一個npm的帳號

發佈包以前你必需要註冊一個npm的帳號java

二、初始化一個簡單的項目發佈

a、本地建立一個文件夾:例如:z-tool b、執行命令進入目錄: $ cd z-tool c、執行npm init 初始化項目。默認一路回車就行git

sh-neverleave:z-tool neverleave$ npm init

This utility will walk you through creating a package.json file.
It only covers the most common items, and tries to guess sensible defaults.

See `npm help json` for definitive documentation on these fields
and exactly what they do.

Use `npm install <pkg>` afterwards to install a package and
save it as a dependency in the package.json file.

Press ^C at any time to quit.
package name: (z-tool) 
version: (1.0.0) 
description: 
entry point: (index.js) 
test command: 
git repository: 
keywords: 
author: 
license: (ISC) 
About to write to /Users/neverleave/Desktop/z-tool/package.json:

{
  "name": "z-tool",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC"
}

Is this ok? (yes) 

複製代碼
默認字段簡介:
name:發佈的包名,默認是上級文件夾名。不得與如今npm中的包名重複。包名不能有大寫字母/空格/下滑線!
version:你這個包的版本,默認是1.0.0。對於npm包的版本號有着一系列的規則,模塊的版本號採用X.Y.Z的格式,具體體現爲:
  一、修復bug,小改動,增長z。
  二、增長新特性,可向後兼容,增長y
  三、有很大的改動,沒法向下兼容,增長x
description:項目簡介
mian:入口文件,默認是Index.js,能夠修改爲本身的文件 
scripts:包含各類腳本執行命令
test:測試命令。
author:寫本身的帳號名
license:這個直接回車,開源文件協議吧,也能夠是MIT,看須要吧。
複製代碼

d、在z-tool文件夾中建立一個文件名爲index.js的文件,簡單的寫了一下內容。npm

!function(){
  console.log(`這是引入的包入口`)
}()
複製代碼
三、若是本機第一次發佈包(非第一次可忽略)

在終端輸入npm adduser,提示輸入帳號,密碼和郵箱,而後將提示建立成功,具體以下圖。 【注意】npm adduser成功的時候默認你已經登錄了,因此可跳過第四步。 json

npm adduser 執行結果
最後一行顯示登陸信息,as 後面是用戶名。on 後是源地址,若是不是https://registry.npmjs.org/,好比是淘寶源,請切換。能夠參考: segmentfault.com/a/119000000…

四、非第一次發佈包

在終端輸入npm login,而後輸入你建立的帳號和密碼,和郵箱,登錄,結果同步驟三。segmentfault

五、npm publish 發包

成功發佈:bash

sh-neverleave:z-tool neverleave$ npm publish
+ z-tool@1.0.1
複製代碼

注意:若是項目裏有部分私密的代碼不想發佈到npm上,能夠將它寫入.gitignore 或.npmignore中,上傳就會被忽略了微信

六、查詢發佈的包

到npm官網全局搜索便可maven

七、安裝使用方式

和其餘包使用方式一致,具體使用能夠看源碼介紹或者README.md

八、如何撤銷發佈的包

終端執行 npm unpublish 例如: 一、npm unpublish z-tool@1.0.0 刪除某個版本 二、npm unpublish z-tool --force 刪除整個npm市場的包

不過撤包推薦用法: npm unpublish的推薦替代命令:npm deprecate [@] 使用這個命令,並不會在社區裏撤銷你已有的包,但會在任何人嘗試安裝這個包的時候獲得警告 例如:npm deprecate z-tool '這個包我已經再也不維護了喲~'

【注意】若是報權限方面的錯,加上--force

發佈錯誤集錦

一、須要提升版本號

#一、發包 npm publish 失敗
sh-neverleave:z-tool neverleave$ npm publish
npm ERR! publish Failed PUT 400
npm ERR! code E400
npm ERR! deprecations must be strings : z-tool

npm ERR! A complete log of this run can be found in:
npm ERR!     /Users/neverleave/.npm/_logs/2018-11-23T10_52_01_742Z-debug.log
sh-neverleave:z-tool neverleave$ npm publish


#二、發包 npm publish 失敗
sh-neverleave:z-tool neverleave$ npm publish
npm ERR! publish Failed PUT 403
npm ERR! code E403
npm ERR! You cannot publish over the previously published versions: 1.0.3. : z-tool

npm ERR! A complete log of this run can be found in:
npm ERR!     /Users/neverleave/.npm/_logs/2018-11-23T11_24_57_662Z-debug.log
sh-neverleave:z-tool neverleave$ 

複製代碼

二、發包 npm publish 失敗 解決方案:終端執行: npm publish --access public

參考:stackoverflow.com/questions/5…

#一、發包 npm publish 失敗
sh-neverleave:npm neverleave$ npm publish
npm ERR! publish Failed PUT 400
npm ERR! code E400
npm ERR! unscoped packages cannot be private : z-tool

npm ERR! A complete log of this run can be found in:
npm ERR!     /Users/neverleave/.npm/_logs/2018-11-23T08_44_21_310Z-debug.log
sh-neverleave:npm neverleave$ 

#解決方案:終端執行: npm publish --access public
sh-neverleave:npm neverleave$ npm publish --access public
+ z-tool@1.0.0
sh-neverleave:npm neverleave$ 
複製代碼

三、確保登陸的用戶帳號正確

sh-neverleave:npm neverleave$ npm publish
npm ERR! publish Failed PUT 404
npm ERR! code E404
npm ERR! 404 User not found : z-tool
npm ERR! 404 
npm ERR! 404  'z-tool' is not in the npm registry.
npm ERR! 404 You should bug the author to publish it (or use the name yourself!)
npm ERR! 404 
npm ERR! 404 Note that you can also install from a
npm ERR! 404 tarball, folder, http url, or git url.

npm ERR! A complete log of this run can be found in:
npm ERR!     /Users/neverleave/.npm/_logs/2018-11-23T07_32_28_518Z-debug.log
複製代碼

四、登陸時須要在username 前加‘~’,具體你們能夠驗證

sh-neverleave:npm neverleave$ npm login
Username: (~neverleave) neverleave
Password: (<default hidden>) 
Email: (this IS public) (1063588359@qq.com) 
npm ERR! code EAUTHIP
npm ERR! Unable to authenticate, need: Basic

npm ERR! A complete log of this run can be found in:
npm ERR!     /Users/neverleave/.npm/_logs/2018-11-23T07_27_50_877Z-debug.log
sh-neverleave:npm neverleave$ 
複製代碼

五、無權限刪除線上的包(撤包有時間限制,24小時) 解決方案:加上 --force

sh-neverleave:z-tool neverleave$ npm unpublish z-tool
npm ERR! Refusing to delete entire project.
npm ERR! Run with --force to do this.
npm ERR! npm unpublish [<@scope>/]<pkg>[@<version>]
sh-neverleave:z-tool neverleave$ 

#解決方案(內部有被鄙視的話,😄 I sure hope you know what you are doing.)
sh-neverleave:z-tool neverleave$ npm unpublish z-tool --force
npm WARN using --force I sure hope you know what you are doing.
- z-tool
sh-neverleave:z-tool neverleave$ 
複製代碼

六、刪除npm市場的包同名的24小時後才能從新發布

sh-neverleave:z-tool neverleave$ npm publish
npm ERR! publish Failed PUT 403
npm ERR! code E403
npm ERR! z-tool cannot be republished until 24 hours have passed. : z-tool

npm ERR! A complete log of this run can be found in:
npm ERR!     /Users/neverleave/.npm/_logs/2018-11-23T11_41_24_086Z-debug.log
sh-neverleave:z-tool neverleave$ 
複製代碼

完結

關注微信公衆號,提高綜合技能

關注微信公衆號
相關文章
相關標籤/搜索