iT邦幫忙

2024 iThome 鐵人賽

DAY 29
0
Modern Web

蓋一個自己的 Nuxt 3 UI Module系列 第 29

npm 與 package.json

  • 分享至 

  • xImage
  •  

接下來就是要發布 npm 的時候啦!

step 1: 還沒有 npm 帳號的話先註冊一個~

step 2: 登入 npm

npm login

接著會提示按下 ENTER 跳轉到網頁登入

npm notice Log in on https://registry.npmjs.org/
Login at:
https://www.npmjs.com/login?...........................
Press ENTER to open in the browser...

因為我沒有設定二階段驗證 (2FA),會寄一組一次性的 OTP 驗證碼到註冊的 mail,輸入後就登入成功囉!

 Logged in on https://registry.npmjs.org/.

step 3:

設定 version 與相關資訊 (以後如果有更新 version 也要同步更新)

// package.json
{
  "name": "seal-module", //發布套件的名稱
  "version": "1.0.0", //套件版本號
  "description": "My new Nuxt module", //關於這個模組的描述,可以讓開發人員快速了解模組的具體功能
  "repository": "your-org/my-module", //在 github 上放置程式碼的位置
  "license": "MIT", //版權類型
  "type": "module", //決定使用 ESM 還是 CJS 模式
  "exports": { //定義了不同環境下如何導入這個模組
    ".": {
      "types": "./dist/types.d.ts",
      "import": "./dist/module.mjs",
      "require": "./dist/module.cjs"
    }
  },
  "main": "./dist/module.cjs", //模組的進入點
  "types": "./dist/types.d.ts", //TypeScript 類型定義文件
  "files": [ //發布到 npm 時需要包含的文件或目錄
    "dist"
  ],
  "scripts": {
    "prepack": "nuxt-module-build build",
    "dev": "nuxi dev playground",
    "dev:build": "nuxi build playground",
    "dev:prepare": "nuxt-module-build build --stub && nuxt-module-build prepare && nuxi prepare playground",
    "release": "npm run lint && npm run test && npm run prepack && changelogen --release && npm publish && git push --follow-tags",
    "lint": "eslint .",
    "test": "vitest run",
    "test:watch": "vitest watch",
    "test:types": "vue-tsc --noEmit && cd playground && vue-tsc --noEmit"
  },
  "dependencies": {
    "@nuxt/icon": "^1.5.1",
    "@nuxt/kit": "^3.13.1",
    "@nuxtjs/tailwindcss": "^6.12.1",
    "defu": "^6.1.4",
    "vue-tippy": "^6.4.4"
  },
  "devDependencies": {
    "@nuxt/devtools": "^1.4.1",
    "@nuxt/eslint-config": "^0.5.5",
    "@nuxt/module-builder": "^0.8.3",
    "@nuxt/schema": "^3.13.1",
    "@nuxt/test-utils": "^3.14.1",
    "@types/node": "^22.5.3",
    "changelogen": "^0.5.5",
    "eslint": "^9.9.1",
    "nuxt": "^3.13.0",
    "typescript": "latest",
    "vitest": "^2.0.5",
    "vue-tsc": "^2.1.4"
  }
}

step 4 : 接著開始打包模組啦

npm run prepack

這樣就是打包成功囉

step 5: 發布到 npm

npm publish 

這樣通常是跟別人有重複名稱了~~(沒想到還有其他海豹阿)~~

如果變成 @feifeiseal/seal-module 會變成私有的狀態,直接 publish 的話會噴出以下錯誤~

需要另外指定參數表示公開

npm publish --access public

當然也可以很乾脆的選擇改名稱~

不小心發錯了也不用擔心,可以下指令刪除

//整包刪除,24小時內可以透過這個指令整包刪除!超過就要聯繫 npm 嚕~
npm unpublish feifeiseal-module

//強制刪除指定版本,刪除後不能重複推同一個版號
npm unpublish @feifeiseal/seal-module@1.0.0 --force

然後就可以在 npm 上面看到熱騰騰的 module 啦

描述的部分可以在 README.md 的部份透過 md 語法撰寫這個模組相關的內容


上一篇
transplie 與 #import
下一篇
安裝與修改
系列文
蓋一個自己的 Nuxt 3 UI Module30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言