npm包的开发与发布

npm包的开发与发布

一、准备工作

首先需要确保本地已安装 Node.js 和 NPM,可以通过 node -v , npm -v 命令进行检查。如果没有安装,则需要先下载安装。

二、初始化项目

2.1 初始化:

npm create vite

2.2 选择模板

1.  开发方法库:选择第一个Vanilla模板就可以了
1.  开发组件库:如果想开发基于vue的组件库可直接选择Vue模板

在这里插入图片描述

三、封装方法或组件并添加打包配置

新建项目后先npm install安装一下依赖,并将项目中多余的文件和代码删除,减小npm包的大小。

3.1 封装方法库

  1. 在根目录下新建src文件夹,并新建一个js文件写入想要封装的方法,如下:
    在这里插入图片描述

  2. 在main.js中引入引入封装方法的js文件,并导出封装的方法在这里插入图片描述

  3. 配置package.json

{
  "name": "hjw-methods-package", // 包名,命名前可以先去npm官网中查看是否已有这个包名,如果已经有的话就发布不了
  "private": false, // 是否为私有包,false则表示公开包
  "version": "0.0.1", // 版本号,之后如果要更新,必须加大才能发布
  "type": "module",  // 指定项目的模块类型为模块
  "scripts": {
    "dev": "vite",
    "build": "vite build",
    "preview": "vite preview"
  },
   // 指定发布的文件夹
  "files": [
    "dist"
  ],
  "main": "dist/hjw-methods-packaget.cjs", // 指定项目的主入口文件(CommonJS)
  "module": "dist/hjw-methods-package.js", // 指定项目的模块入口文件(ES Module)
  "devDependencies": {
    "vite": "^5.4.1"
  }
}

  1. 创建vite.config.js,并加入配置
import { defineConfig } from 'vite'

export default defineConfig({
  build: {
    outDir: 'dist', // 构建输出目录设置为'dist'
    target: 'es2020', // 构建目标设置为'es2020'
    lib: {
      entry: 'main.js', // 设置库的入口文件
      formats: ['es', 'cjs'], // 定义导出格式 包含 'es' 模块格式,适用于 ES6 及以上版本,包含 'cjs' 模块格式,适用于 CommonJS 规范
      name: ''
    },
  },
})

3.2 封装组件库

  1. 在src文件夹新建package文件夹,并创建.vue文件写入想要封装的代码,如下

在这里插入图片描述

  1. 在package新建js文件,引入封装的组件:
import BtnTab from './BtnTab.vue' // 导入自定义的Vue组件:BtnTab
import './index.css' // 导入CSS样式文件,为应用添加全局样式

// 定义一个安装函数,用于将BtnTab组件注册到Vue应用中
const install = (app) => {
   // 将BtnTab组件注册为全局组件,使得在应用的任何地方都可以使用这个组件
  app.component('BtnTab', BtnTab)
}

// 默认导出一个对象,包含install方法,允许外部通过'default'关键字导入并安装BtnTab组件
export default {
  install,
}
// 单独导出BtnTab组件,允许外部按需导入
export { BtnTab }
  1. 配置vite.config.js
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'

export default defineConfig({
  plugins: [vue()],
  build: {
    outDir: 'dist',
    lib: {
      entry: 'src/package/index.js', // 入口文件路径
      name: 'hjw-components-package', // 组件库的名称
      fileName: 'hjw-components-package', // 打包后的文件名
    },
    rollupOptions: {
      // 处理不想打包的依赖
      external: ['vue'],
      output: {
        globals: {
          vue: 'Vue',
        },
      },
    },
  },
})
  1. 运行npm run build命令打包

  2. 配置package.json

    {
      "name": "hjw-components-package",
      "private": false,
      "version": "0.0.1",
      "type": "module",
      "scripts": {
        "dev": "vite",
        "build": "vite build",
        "preview": "vite preview"
      },
      // 指定包含的文件或文件夹
      "files": [
        "dist"
      ],
      "main": "dist/hjw-components-package.umd.cjs",
      "module": "dist/hjw-components-package.js",
      "exports": {
        ".": {
          "import": "./dist/hjw-components-package.js",  // import导入模块时的入口文件
          "require": "./dist/hjw-components-package.umd.cjs" // require方式引入模块时的入口文件
        }
      },
      "dependencies": {
        "vue": "^3.4.37"
      },
      "devDependencies": {
        "@vitejs/plugin-vue": "^5.1.2",
        "vite": "^5.4.1"
      }
    }
    
    
    1. 编写README.md文件。

      **README.md 文件,是包的使用说明文档,用于向用户和开发者提供项目的相关信息和指导。**README文件中具体写什么内容,并没有强制性要求;只要能够清晰地把包的作用、用法、注意事项等描述清楚即可。如:

    在这里插入图片描述

四、发布到npm

4.1 登录npm

在终端输入npm login ,在登录前一定要将npm源设置为官方源,否则登录会报错

// 官方镜像源
npm config set registry https://registry.npmjs.org/
// 淘宝镜像源
npm config set registry https://registry.npmmirror.com/

检查当前npm源:

npm config get registry

4.2 发布包

在终端输入npm publish (这个命令也需要npm源为官方源)

发布成功后登录npm官网,在自己的账号上packages中就能看到自己发布的包了

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值