一、CommonJS規范導入require
創建一個npm包涉及幾個步驟,包括設置你的項目結構、編寫代碼、編寫文檔、測試你的代碼,以及發布到npm倉庫。以下是一個基本的指南,幫助你從頭開始創建一個npm包。
步驟 1: 初始化npm項目
-
創建項目文件夾:首先,你需要一個文件夾來存放你的項目。
mkdir muzidigbig-utils-npm cd muzidigbig-utils-npm
-
初始化npm項目:在項目文件夾中,運行以下命令來初始化一個新的npm項目。
npm init -y
這會創建一個
package.json
文件,包含一些默認設置。
步驟 2: 編寫代碼
-
創建文件:根據你的包需要,創建必要的文件和目錄結構。例如,如果你打算創建一個簡單的工具函數庫,你可以創建一個
index.js
文件。// index.js function sayHello(name) {return `Hello, ${name}!`; }module.exports = { sayHello };
步驟 3: 編寫文檔
-
更新
package.json
:在package.json
文件中,你可以添加更詳細的描述、關鍵字、作者信息等。{"name": "muzidigbig-utils-npm","version": "1.0.0","description": "A simple npm package example.","main": "index.js","scripts": {"test": "echo \"Error: no test specified\" && exit 1"},"keywords": ["muzidigbig", "utils", "npm"],"author": "muzidigbig","license": "ISC" }
name: 包名稱,
version: 版本號,
description: 包描述,
main: 入口文件,
keywords:數組(搜索關鍵字),
license:開源協議?
步驟 4: 測試你的代碼
-
添加測試腳本:你可以使用Jest、Mocha等測試框架來測試你的代碼。首先,安裝Jest:
npm install --save-dev jest
-
創建測試文件:例如,創建一個 test/my-package.test.js 文件:
const { sayHello } = require('../index'); test('says hello', () => {expect(sayHello('World')).toBe('Hello, World!'); });
-
更新
package.json
的scripts:添加一個測試腳"scripts": {"test": "jest" }
-
運行測試:
npm test
步驟 5: 發布到npm倉庫
-
登錄到npm:如果你還沒有登錄,運行以下命令:
npm login
首先確保你本地的鏡像為 npm 鏡像查看鏡像 npm config get registry修改為 npm鏡像 npm config set registry https://registry.npmjs.org/修改為 npm鏡像(全局) sudo npm config set -g registry https://registry.npmjs.org/
-
發布包:確保你的版本號在
package.json
中是唯一的(遵循語義版本控制),然后運行:npm publish
每次 npm publish 都需要修改 package.json version版本號保證其唯一。
-
驗證發布:登錄到npm網站,查看你的包是否已經發布。
通過以上步驟,你可以成功創建一個并發布一個npm包。記得在開發過程中不斷更新文檔和添加更多功能,以使你的包更加完善和有用。
刪除 npm包
執行命令?npm unpublish 包名 --force
,即可從 npm 刪除已發布的包。
注意
:
① npm unpublish 命令只能刪除 72 小時以內發布的包。
② npm unpublish 刪除的包,在 24 小時內不允許重復發布。
Usage 用法
1.項目中安裝依賴:?
npm install muzidigbig-utils-npm
2.引入包?
// const { sayHello } = require('muzidigbig-utils-npm');
import { sayHello } from 'muzidigbig-utils-npm'; // ES6
console.log(sayHello('World')); // Outputs: Hello, World!
二、升級為ES6模塊導入(import/export)
Node.js > v13.2.0
步驟 1:?設置type為module
在項目的package.json中添加"type": "module"
,這樣Node.js會將所有的.js文件都當成ES6模塊來處理?
步驟 2:?代碼轉譯?
使用如Babel這樣的轉譯工具將代碼轉譯為兼容老版本Node.js的格式??
npm i @babel/core @babel/preset-env
配置 Babel
通常使用?.babelrc
?文件或?babel.config.cjs
?文件來配置 Babel
module.exports = {presets: ['@babel/preset-env'],
}