自定义vue组件发布npm仓库

一、函数放在npm上

准备工作:

1、登陆npm官网申请一个有效的账号

2、本地创建一个文件夹(例如:abc)注意:一定不能是驼峰命名

3、文件夹内创建一个index.js文件,一个README.md文件

4、文件夹内打开终端运行 npm init 后填写项目相关信息

5、在index.js写入你想发布的代码

image.png

发布:

6、当前文件夹下运行终端 输入 npm login 进行登陆

8、输入npm账号名-输入密码-输入邮箱-输入验证码(去邮箱里取)

9、终端出现 项目@版本号 说明发布成功了

image.png

以下是遇到的问题

问题一:

image.png

  • 在 npm login 时,报错 Unexpected token < in JSON at position 0 while parsing near '<!DOCTYPE HTML PUBLI...'
  • 原因是发包时必须是 npm 官方镜像地址:

解决办法

# 查看当前镜像地址
$ npm config get registry
# 修改 npm 源地址为官方源
$ npm config set registry https://registry.npmjs.org/
# 将 npm 源地址修改为淘宝源(用于安装 npm 速度慢的时候使用)
$ npm config set registry  https://registry.npm.taobao.org/
  • 执行 $ npm config set registry https://registry.npmjs.org/ 后,再次尝试!

再执行 npm publish

问题二:

image.png

包名不合法,我的是因为 miniVM 包含大写,请改为合法包名且不重复的包名即可。

再执行npm publish 就成功了

二、怎么把一个组件放在npm 上?

2.1 准备工作

在src 下新建package>index.js package>group>index.js package>group>src>index.vue

image.png

2.2 实现组件内容

在package>group>src>index.vue

<template>
  <p class="labelTitle" :name="name">
    {{ name }}<span v-if="tips" class="tips">({{ tips }})</span>
  </p>
</template>
<script>
export default {
  name: 'CtjGroup',
  /**
   * ctj-group属性参数
   * @property {string} [name] 分组名称
   * @property {string} [tips] 补充说明,默认值空
   */
  props: {
    // 分组名称
    name: {
      type: String,
      default: '分组名称',
    },
    // 补充信息
    tips: {
      type: String,
      default: '',
    },
  },
  data() {
    return {}
  },
}
</script>
<style lang="css" scoped>
.labelTitle {
  font-weight: bolder;
  font-size: 16px;
  border-left: 4px solid #1890ff;
  padding-left: 4px;
}
.tips {
  font-size: 12px;
  color: #606266;
  font-weight: 400;
  padding-left: 4px;
}
</style>

在package>group>index.js

import Module from './src/index.vue'
// 给组件定义install方法
Module.install = Vue => {
  Vue.component(Module.name, Module) //注意这里使用了组件中的name,
}
export default Module

在package>index.js

import group from './group'
const components = [group]
const install = Vue => {
  // 判断组件是否安装,如果已经安装了就不在安装。
  if (install.installed) return
  install.installed = true
  // 遍历的方式注册所有的组件
  components.map(component => Vue.use(component))
}
// 检查vue是否安装,满足才执行
if (typeof window !== 'undefined' && window.Vue) {
  install(window.Vue)
}
export default {
  // 所有的组件必须有一个install的方法,才能通过Vue.use()进行按需注册
  install,
  ...components,
}
2.3 检验组件是否在本地可以使用
 <group :name="'三国演示'" :tips="'中国古典文学四大名著之一'"></group>
import Group from '../../package/group/index.js'
  components: {
    Group
  },
2.4 组件打包

在package.json中增加打包命令

在package.json中增加打包命令
  "scripts": {
    "serve": "vue-cli-service serve",
    "build": "vue-cli-service build",
    "lint": "vue-cli-service lint",
    "package": "vue-cli-service build --target lib ./src/package/index.js --name webui-whm --dest webui-whm"
  },
说明:
target lib 关键字 指定打包的目录
name 打包后的文件名字
dest 打包后的文件夹的名称
执行打包命令:npm run package
打包完成后,会生成我们指定的webui-whm文件目录,里面存放的就是打包后的文件。

image.png

2.6 切换到webui-whm 目录下, npm init -y来初始化一个package.json文件 并增加README.md文件
2.7 发布 ,注意是在webui-whm 的目录下

2.7.1 登陆npm官网申请一个有效的账号

2.7.2 当前文件夹下运行终端 输入 npm login 进行登陆

2.7.3 输入npm账号名-输入密码-输入邮箱-输入验证码(去邮箱里取)

2.7.4 npm publish

出现+ webui-whm@1.0.0 说明成功了

2.8 设置npm源

实际开发中,本地的npm镜像源都会使用国内的,如果要发布npm 就需要切换到npm的官方源,命令如下

如果安装了nrm,可以使用 nrm ls查看本地npm源

image.png

2.9 使用组件

执行 npm i webui-whm 安装组件

在main.js中添加引用
import webuitest from 'webui-whm';
import 'webui-whm/webui-whm.css'
Vue.use(webuitest);
在页面中添加组件
 <CtjGroup :name="'三国演示'" :tips="'中国古典文学四大名著之一'"></CtjGroup> //组件名就是在组件中的name

参看文章 https://blog.csdn.net/lqh4188/article/details/127027831

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要将 Vue 组件发布npm 上,可以按照以下步骤进行操作: 1. 在你的项目根目录下,使用 `npm init` 命令创建一个 `package.json` 文件。 2. 在 `package.json` 中添加 `main` 属性,指定组件的入口文件路径,例如: ``` "main": "dist/my-component.js", ``` 这里假设你的组件入口文件是 `my-component.js`,并且已经打包到了 `dist` 目录下。 3. 在项目根目录下创建一个 `.npmignore` 文件,用于指定哪些文件不需要被发布npm 上。例如: ``` node_modules/ dist/ ``` 这里的意思是排除 `node_modules` 和 `dist` 目录,因为这些文件夹通常都比较大,而且在安装组件时也不需要这些文件。 4. 在 `package.json` 中添加 `scripts` 属性,用于定义打包命令,例如: ``` "scripts": { "build": "vue-cli-service build --target lib --name my-component src/index.js" }, ``` 这里假设你使用 Vue CLI 3.x 创建了组件项目,并且入口文件是 `src/index.js`。运行 `npm run build` 命令会将组件打包到 `dist` 目录下。 5. 添加 `peerDependencies` 属性,用于指定组件的依赖关系,例如: ``` "peerDependencies": { "vue": "^2.6.10" }, ``` 这里假设你的组件依赖于 Vue 2.x 版本。 6. 确认所有依赖项都已经安装完成,然后使用 `npm login` 命令登录到 npm 账号。 7. 使用 `npm publish` 命令将组件发布npm 上,例如: ``` npm publish ``` 这里假设你已经在 `package.json` 中指定了包名和版本号。 发布成功后,其他人就可以通过 `npm install` 命令安装你的组件了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值