Vue 进阶系列丨npm发布vue组件

aaef0a7e7b0a6c524a87bb8735ac7dc7.png

Vue 进阶系列教程将在本号持续发布,一起查漏补缺学个痛快!若您有遇到其它相关问题,非常欢迎在评论中留言讨论,达到帮助更多人的目的。若感本文对您有所帮助请点个赞吧!


2013年7月28日,尤雨溪第一次在 GItHub 上为 Vue.js 提交代码;2015年10月26日,Vue.js 1.0.0版本发布;2016年10月1日,Vue.js 2.0发布。

最早的 Vue.js 只做视图层,没有路由, 没有状态管理,也没有官方的构建工具,只有一个库,放到网页里就可以直接用了。

后来,Vue.js 慢慢开始加入了一些官方的辅助工具,比如路由(Router)、状态管理方案(Vuex)和构建工具(Vue-cli)等。此时,Vue.js 的定位是:The Progressive Framework。翻译成中文,就是渐进式框架。

Vue.js2.0 引入了很多特性,比如虚拟 DOM,支持 JSX 和 TypeScript,支持流式服务端渲染,提供了跨平台的能力等。Vue.js 在国内的用户有阿里巴巴、百度、腾讯、新浪、网易、滴滴出行、360、美团等等。

Vue 已是一名前端工程师必备的技能,现在就让我们开始深入学习 Vue.js 内部的核心技术原理吧!


什么是npm

作为前端工程师,我们肯定都用过npm、yarn之类的包管理工具。大多数时候,我们都是引用别人写好的第三方组件库,比如elementui、vantui等,其实,我们也可以定义自己的组件,然后发布到npm上,供其他人使用。这篇文章就是告诉大家,如何发布自己的组件到npm上,并且在本地项目中下载使用的。


总体流程

我们先介绍一下总体流程,方便大家有一个总流程认知。具体包括如下几步:

  • 新建一个vue项目

  • 新建一个组件

  • 打包组件

  • 将组件发布到npm上

  • 本地安装自己的组件



新建一个vue项目

这里我们可以先创建自己的vue项目,在控制台通过命令 

vue create hfun_npm

创建完的项目目录如下:

8b9cc49546332e8327bacde783c7c889.png



新建一个组件

创建一个自己的组件,用来发布。

// hfun.vue
<template>
  <div>
    <button class="main">hfun Team</button>
  </div>
</template>


<script>
export default {
  name: 'hfun'
}
</script>


<style scoped>
.main{
  background:#0984e3;
  color: #fff
}
</style>

测试自己当前组件能否正常运行:

// home.vue
<template>
  <div class="home">
    <img alt="Vue logo" src="../assets/logo.png">
    <hfun/>
  </div>
</template>


<script>
import hfun from '@/components/hfun.vue'


export default {
  name: 'Home',
  components: {
    hfun 
  }
}
</script>
// router里的index.js
import Vue from 'vue'
import VueRouter from 'vue-router'
import Home from '../views/Home.vue'


Vue.use(VueRouter)


const routes = [
  {
    path: '/',
    name: 'Home',
    component: Home
  }
]


const router = new VueRouter({
  routes
})


export default router
// App.vue
<template>
  <div id="app">
    <router-view/>
  </div>
</template>


<style>
#app {
  font-family: Avenir, Helvetica, Arial, sans-serif;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-align: center;
  color: #2c3e50;
}
</style>

项目运行结果展示:

88511c8a0d8495687b9ff62ece4479e9.png



定义install函数

我们在使用组件的时候,会用到 Vue.use() 函数,那么当我们执行这个函数的时候,就会执行我们这里定义的 install 函数。

在src下新建 hfun-npm 文件夹,并且在 hfun-npm 内新建 index.js,内容如下:

// index.js
import hfun from './../components/hfun.vue'


const install = (Vue)=>{
    Vue.component(hfun.name,hfun)
}


export default install


打包组件


现在就要把我们写的组件,打包了

  • 修改package.json文件

{
  "name": "hfun_npm",
  "version": "0.1.0",
  "private": true,
  "scripts": {
    "serve": "vue-cli-service serve",
    "build": "vue-cli-service build",
    "hfun": "vue-cli-service build --target lib ./src/hfun-npm/index.js --dest hfun-npm --name hfun-npm"
  },
  "dependencies": {
    "core-js": "^3.6.5",
    "vue": "^2.6.11",
    "vue-router": "^3.2.0",
    "vuex": "^3.4.0"
  },
  "devDependencies": {
    "@vue/cli-plugin-babel": "~4.5.0",
    "@vue/cli-plugin-router": "~4.5.0",
    "@vue/cli-plugin-vuex": "~4.5.0",
    "@vue/cli-service": "~4.5.0",
    "vue-template-compiler": "^2.6.11"
  },
  "browserslist": [
    "> 1%",
    "last 2 versions",
    "not dead"
  ]
}

这里我们新增了一个命令,"hfun", 因为默认的build打包的是src下的所有文件,这里我们只需要打包我们自己的组件就可以了。

--target lib   指定打包目录,也就是打包的入口文件

--name   打包后的文件名称

--dest     打包后的文件夹的名称

  • 执行打包命令 npm run hfun

打包成功之后,我们可以看到根目录下方,多了一个文件夹,如图:

2fe6d62f7211dc6081987a556d9ad9d6.png

  • 准备我们的npm文件夹

新建一个新的文件夹,hfun-package,并且将hfun-npm里的css文件和hfun-npm.umd.min文件复制到hfun-package文件夹中。如图所示:

1b4f86e02dee92cbaa149e8c4c41c9a1.png

在hfun-package中初始化一个npm, 在hfun-package文件夹下,执行npm init -y,最终在hfun-package文件夹下,会自动新增一个package.json文件。

// package.json
{
  "name": "hfun-package",
  "version": "1.0.0",
  "description": "",
  "main": "hfun-npm.umd.min.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC"
}


将组件发布到npm上

  • 创建自己的npm账号,这里大家百度一下就可以找到

  • 在hfun-package文件夹下,执行如下命令

npm login -- 输入账号密码

npm publish --access public

现在,我们的组件就已经发布成功了。可以登录npm,查看自己刚刚发布的组件

643680476cf7b81ccfe1a26c2cd34f96.png



本地安装自己的组件

现在,我们就要在本地安装自己刚刚发布的npm包了。

  1. 执行命令 npm install hfun-package

  2. 修改main.js,添加如下三行代码

import hfun from 'hfun-package'
import 'hfun-package/style/hfun-npm.css'
Vue.use(hfun)

    3. 修改home.vue,这里我们直接使用自己发布到npm的包

// home.vue
<template>
  <div class="home">
    <img alt="Vue logo" src="../assets/logo.png">
    <hfun/>
  </div>
</template>


<script>


export default {
  name: 'Home'
}
</script>

   4. 运行项目,看是否正常运行

ff5fc5f201ca4f8609de393b58fda0be.png

  5. 至此,npm发布vue组件已经完成了


Vue 进阶系列教程将在本号持续发布,一起查漏补缺学个痛快!若您有遇到其它相关问题,非常欢迎在评论中留言讨论,达到帮助更多人的目的。若感本文对您有所帮助请点个赞吧!

5e93513c5a3829c89932b0b6c2616244.png

叶阳辉

HFun 前端攻城狮

往期精彩:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值