<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          如何發(fā)布 npm 包

          共 7445字,需瀏覽 15分鐘

           ·

          2021-01-15 21:54

          (給全棧前端精選加星標(biāo),提升前端技能)

          轉(zhuǎn)自:kkk 愛學(xué)習(xí)

          juejin.cn/post/6911853807756378125

          npm是什么?

          npm 是Node 的模塊管理器,功能極其強大。它是Node 獲得成功的重要原因之一。正因為有了npm,我們只要一行命令,就能安裝別人寫好的模塊。

          npm install

          npm install:https://docs.npmjs.com/cli/install 命令用來安裝模塊到node_modules目錄。

          $?npm?install??
          --save-dev?-D?本地
          --save?-S?生產(chǎn)
          -g?全局
          $?npm?uninstall?

          安裝之前,npm install會先檢查,node_modules目錄之中是否已經(jīng)存在指定模塊。如果存在,就不再重新安裝了,即使遠程倉庫已經(jīng)有了一個新版本,也是如此。

          如果你希望,一個模塊不管是否安裝過,npm 都要強制重新安裝(不需要刪掉nodemodules),可以使用-f--force參數(shù)

          $?npm?install??--force?//?強制更新

          npm update

          如果想更新已安裝模塊,就要用到 npm update:https://docs.npmjs.com/cli/update 命令。

          $?npm?update?

          它會先到遠程倉庫查詢最新版本,然后查詢本地版本。如果本地版本不存在,或者遠程版本較新,就會安裝。

          模塊的安裝過程

          1. 發(fā)出npm install命令
          2. npm 向 registry 查詢模塊壓縮包的網(wǎng)址
          3. 下載壓縮包,存放在~/.npm目錄
          4. 解壓壓縮包到當(dāng)前項目的node_modules目錄

          npm常用指令

          npm?init?--yes(初始化配置)??-y

          npm?i?(會根據(jù)package.json里面的鍵dependencies,devDependencies來安裝相對應(yīng)的包)

          npm?i?包(默認(rèn)安裝一個最新的包,這個包在node_modules文件夾里面,并且會更新在你的package.json文件)

          npm?i?包@3.0.0(安裝一個指定版本的包,會更新在你的package.json文件)

          npm?i?包?--save-dev(安裝一個開發(fā)環(huán)境所需要的包,會更新在你的package.json文件)?-D
          npm?i?包?--save(安裝一個生產(chǎn)環(huán)境所需要的包,會更新在你的package.json文件)?-S

          npm?uninstall?包(卸載一個包,會更新在你的package.json文件)

          npm?update?包(更新此包版本為最新版本,會更新在你的package.json文件)

          npm?run?腳本鍵(會根據(jù)package.json里面的"scripts"里面的腳本鍵自動執(zhí)行相對于的值)

          npm?publish??(根據(jù)package.json的name發(fā)布一個包)?發(fā)布到npm倉庫

          npm?unpublish?包名?--force(卸載npm網(wǎng)站上自己上傳的包)

          packageJson文件配置

          {
          ?"name":?"axios",?//發(fā)布的包名,默認(rèn)是上級文件夾名。不得與現(xiàn)在npm中的包名重復(fù)。包名不能有大寫字母/空格/下滑線!
          ??"version":?"2.2.2",//你這個包的版本,默認(rèn)是1.0.0。對于npm包的版本號有著一系列的規(guī)則,模塊的版本號采用X.Y.Z的格式,具體體現(xiàn)為:
          ? 1、修復(fù)bug,小改動,增加z。
          ??2、增加新特性,可向后兼容,增加y
          ??3、有很大的改動,無法向下兼容,增加x
          ??"description":?"用來請求接口,懂了嗎二貨",?//?介紹
          ??"main":?"index.js",//?入口文件,默認(rèn)是Index.js,可以修改成自己的文件,這個很重要,當(dāng)你在實際項目使用的時候,let a = require("包名"),它就去會去找對應(yīng)的文件路徑哦。
          ??"scripts":?{??????????????????//?快捷命令,在package.json同目錄下輸入命令?npm?run?鍵?就會執(zhí)行?相對應(yīng)的命令
          ????"bulid":?"npx?webpack?--config?myConfig.js",
          ???"start":?"xxx",
          ???//例如?輸入 npm run bulid 就會執(zhí)行npx webpack --config myConfig.js的命令?。
          ???//?npm?start?省略run
          ??},
          ??"keywords":?[],
          ??"author":?"王二蛋",
          ??"license":?"ISC",//?這個直接回車,開源文件協(xié)議吧,也可以是MIT,看需要吧。
          ??"dependencies":?{?????????????//?生產(chǎn)環(huán)境所依賴的包
          ????"jquery":?"^3.4.1",
          ????"sea":?"^1.0.2"
          ??},
          ??"devDependencies":?{??????????//?開發(fā)環(huán)境所依賴的包
          ????"webpack":?"^4.41.6"
          ??}
          }

          更改npm默認(rèn)的下載路徑和緩存路徑

          npm config ls 命令可查看npm的安裝信息以及默認(rèn)的下載路徑。

          D:\software\cmder\cmder>npm?config?ls
          ;?cli?configs
          metrics-registry?=?"https://registry.npmjs.org/"
          scope?=?""
          user-agent?=?"npm/6.13.4?node/v12.14.0?win32?x64"

          ;?builtin?config?undefined
          prefix?=?"C:\\Users\\DELL\\AppData\\Roaming\\npm"

          ;?node?bin?location?=?D:\SoftWareInstall\nodejsIns\node.exe
          ;?cwd?=?D:\software\cmder\cmder
          ;?HOME?=?C:\Users\DELL
          ;?"npm?config?ls?-l"?to?show?all?defaults.

          注意,npm默認(rèn)的下載路徑在C:\Users\DELL\AppData\Roaming\npm,其中AppData是隱藏文件夾,在【查看】菜單中勾選【隱藏的項目】才可以看到AppData文件夾。

          //?更改npm默認(rèn)的緩存路徑
          npm?config?set?cache?"D:\TempDate\nodedata\cache"

          //?更改npm默認(rèn)的下載路徑
          npm?config?set?prefix?"D:\TempDate\nodedata\download"

          更改緩存路徑和下載路徑后,再次查看

          D:\software\cmder\cmder>npm?config?ls

          ;?userconfig?C:\Users\DELL\.npmrc
          cache?=?"D:\\TempDate\\nodedata\\cache"
          prefix?=?"D:\\TempDate\\nodedata\\download"

          那么下面來介紹一下,如何創(chuàng)建自己的第一個node模塊,并把這個模塊上傳到npm上面,讓別人可以用我們的模塊

          創(chuàng)建第一個node模塊

          Node.js模塊就是發(fā)布到npm的代碼包,

          創(chuàng)建一個新模塊的第一步就是創(chuàng)建一個package.json文件。你可以用npm init來創(chuàng)建package.json文件。這個過程中命令行會逐步提示你輸入這個模塊的信息, 其中模塊的名字和版本號是必填項

          你還需要一個入口文件, 如果你使用默認(rèn)值的話,那就會是index.js. 創(chuàng)建完package.json文件之后,你就要開始寫代碼包里的內(nèi)容了, 這里舉個最簡單的例子,在默認(rèn)的index.js里寫一個要導(dǎo)出的函數(shù), 這個函數(shù)也就是別人的代碼里可以import或者require的。

          exports.showMsg?=?function?()?{
          ??console.log("This?is?my?first?module");
          };

          這樣的話,你的node模塊就已經(jīng)創(chuàng)建完成了

          如何發(fā)布到npm服務(wù)器上

          注冊一個npm賬號
          首次需要登錄,npm login 存儲證書到本地,后面就不需要每次都登錄的

          登錄需要輸入用戶名,密碼,還有郵箱,這些都是剛剛注冊時候填寫的

          開始發(fā)布

          npm publish 發(fā)布包

          使用 cnpm 的注意報錯:no_perms Private mode enable, only admin can publish this module 設(shè)置回原本的就可以了 **npm config set registry registry.npmjs.org ** 發(fā)布完成之后,如果還想回到之前的cnpm,使用下面的命令 npm config set registry registry.npm.taobao.org

          創(chuàng)建一個案例,引用剛上傳的包

          假設(shè)已經(jīng)成功發(fā)布了,并且包名叫做toniqian-test-module, 這時候可以新建一個空目錄,cd進去,運行npm install toniqian-test-module,然后在這個目錄下會出現(xiàn)一個叫node_modules的文件夾,你之前寫的包就會出現(xiàn)在這個文件夾下面。

          然后寫一個index.js,代碼如下

          var?test?=?require('toniqian-test-module');
          test.showMsg();

          運行index.js

          node?index.js

          那么剛剛上傳的包,目前已經(jīng)可以使用,到目前的話, 你已經(jīng)成功創(chuàng)建了一個npm包了

          如何更新npm包

          當(dāng)你包的內(nèi)容修改之后,比如

          exports.showMsg?=?function?()?{
          ??console.log("This?is?my?second?module");
          };
          復(fù)制代碼

          修改了提示文字,那么我們需要 npm version update_type就是版本號的意思,會自動更新package.json里面的版本號 然后重新 npm publish,更新就會完成

          作業(yè) 實現(xiàn)一個相對時間轉(zhuǎn)換函數(shù)

          moment(time){
          ??//?相對時間轉(zhuǎn)換
          }

          如何刪除npm包

          npm?unpublish?kk-a-test?--force

          查看當(dāng)前登錄的npm賬號

          npm?whoami

          輸出 username

          發(fā)布包錯誤集錦

          1、需要提高版本號

          #1、發(fā)包?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


          #2、發(fā)包?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$?

          2、發(fā)包 npm publish 失敗 解決方案:終端執(zhí)行:npm publish --access public

          參考:https://stackoverflow.com/questions/53420758/npm-publish-gives-unscoped-packages-cannot-be-private

          #1、發(fā)包?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$?

          #解決方案:終端執(zhí)行:npm publish --access public
          sh-neverleave:npm?neverleave$?npm?publish?--access?public
          +?z-tool@1.0.0
          sh-neverleave:npm?neverleave$?

          3、確保登錄的用戶賬號正確

          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

          4、登錄時需要在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$?

          5、無權(quán)限刪除線上的包(撤包有時間限制,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>/][@]
          sh-neverleave:z-tool?neverleave$?

          #解決方案(內(nèi)部有被鄙視的話,???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$?

          6、刪除npm市場的包同名的24小時后才能重新發(fā)布

          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$?
          瀏覽 63
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  日本韩国欧美性生话视频 | 亚洲琪琪色 | 久久久夜色精品亚洲在线播放 | sese97sese | 国产 在线 无码 福利 |