怎么把自己写的组件发布到npm官方仓库??

avatar
作者
筋斗云
阅读量:3

一.注册npm账号

npm官网

1.注册npm 账号
在这里插入图片描述
2.登陆
在这里插入图片描述
3.登陆成功
在这里插入图片描述

二.搭建一个vue 项目

具体步骤参考liu.z Z 博客

或者初始化一个vue项目

vue create XXX  (工程名字)  

运行代码

npm run serve  

三.组件封装

1.在src文件下建一个package文件,用来放需要上传到npm的组件
2.编写好自己的组件最好在App.vue 引用一下文件看看这个组件有没有错误文件

(自己写的组件注意一定要写name)

3.在package文件下建一个index.js

目录结构:assets文件是用来保存静态图片的文件、components 文件是我用来放组件的

在这里插入图片描述
index.js文件内容

import ElementUI from 'element-ui'  import MyTable from "./components/myTable/index.vue"; // 引入封装好的组件 const coms = [MyTable]; // 如果有多个其它组件,都可以写到这个数组里   // 遍历可以批量组件注册 const install = function (Vue) {  Vue.use(ElementUI);   coms.forEach((com) => {     Vue.component(com.name, com);   }); };  export default install; // 这个方法使用的时候可以被use调用  

四.配置项目文件

1.在根目录下的package.json 文件中 配置:

 "private": false,    //一定设置为false,为true表示拒绝上传到npm包管理平台  "main": "plugin/index.js",    //文件入口文件 

五.设置打包命令

scripts 配置项中,配置打包命令:

  "package": "vue-cli-service build --target lib ./src/views/package/index.js --name myTable --dest myTable" 

前面的package可以根据自己喜好进行命名,后面的命令为:
–target lib 路径 => 指定打包的目录 (打包路径地址一定要写对,不然运行打包命令会报错)
–name 名称 => 打包后的文件名字
–dest 名称 => 打包后的文件夹的名称
执行命令:

npm run package 

注意 需要在src文件下建一个package文件下去执行这个命令

不然就会报错:
ERROR Failed to resolve lib entry: ./src/views/package/index.js. Make sure to specify the correct entry file.

打包完成后的信息,并在根路径下生成了一个打包文件 (打包目录在根目录下)
在这里插入图片描述
打包后的目录如下(这里我没有写样式所以没有生成css):
在这里插入图片描述

六.组件发布

1.要发布到npm 里,这里还需要新建一个文件夹,把.und.min.js给复制出来放到文件夹下,然后初始化一个packages.json (注意,packages.json不是自己去创建)

npm init -y 

目录结构:
在这里插入图片描述
2.注意查看packages.json文件里的配置是否正确,可以继续配置自己需要的信息
3.需要发布的文件夹配置好了之后,就是需要有一个npm账号,如果没有去注册,要注意记住用户名、密码和邮箱,一会发布的时候会用到。然后需要配置的就是源必须是npm。需要配合nrm使用更方便。
还是在需要打包的 packages 文件夹下安装

npm i nrm -g   //  安装 nrm  nrm ls    // 列出当前所有源的列表    nrm use npm    // 切换使用到 npm

4.登陆npm

npm login 或者 npm adduser 

查看当前npm源

 npm config get registry 

5.发布到远程仓库

npm publish 

这里需要注意,你发布时,刚刚初始化的 package.json 文件的 name 名字不能有大写或重名否则会报错,改为合法包名且不重复的包名即可(这里也不能有特殊符号命名不然也会报错)。
在这里插入图片描述

如果有报402 Payment Required - PUT https://registry.npmjs.org/xxx - You must sign up for private packages 这样的错误的话

需要在发布文件下的packages.json 中配置以下代码

  "publishConfig": {     "access": "public",     "registry": "https://registry.npmjs.org/"   }, 

然后在运行 npm publish 就成功了
在这里插入图片描述

七.全局注册

1.发布成功后,就可以在npm中去查看命令
在这里插入图片描述
在这里插入图片描述
2.找到安装命令后,即可在全局注册使用该组件了,使用方法可以参照 element-ui
在main.js文件中

import Vue from 'vue' import ElementUI from 'element-ui'; import 'element-ui/lib/theme-chalk/index.css'; import App from './App.vue' import router from './router' import store from './store' // 引用组件 import myTable from 'my-table-test';   Vue.config.productionTip = false Vue.use(ElementUI); Vue.use(myTable); new Vue({   router,   store,   render: h => h(App) }).$mount('#app')  

3.在自己需要的界面引用一下这个组件就可以了
注意: 组件名称对应初始化组件中的name

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!