Vue组件库发布到npm详解


Posted in Javascript onFebruary 17, 2018

制作了一套自己的组件库,并发布到npm上,项目代码见https://github.com/hamger/hg-vcomponents

前期准备

  • 有一个npm账号
  • 安装了vue-cli

搭建项目

vue init webpack hg-vcomponents
cd hg-vcomponents
cnpm install

目录结构

- vue-flag-list
  + build
   + dist // 存放发布到npm的代码
   - src
     - components // 存放组件源代码 和 README.md
      - arrows
         arrows.vue
         README.md
       - round
        round.vue
         README.md
      index.js // 组件导出文件
    - examples // 存放组件的 demo
      arrows.vue
       round.vue
       index.vue // 组件 demo 的入口
     - router
       index.js // 引入 examples 下的组件,并配置路由
     App.vue
     main.js
   ...

内部代码详见 GitHub,如果对你有所帮助,给个star吧 。

项目配置

为了使项目能上传到npm上,需要配置一些地方。

build/webpack.base.conf.js

entry: {
  app: process.env.NODE_ENV === 'production'
   ? './src/components/index.js' // 生产模式下导入文件
   : './src/main.js' // 开发模式下导入文件
},

package.json

"private": false, // 因为组件包是公用的,所以 private 为 false
"main": "dist/hg-vcomponents.min.js", // 导出文件名,即 import 引入的文件

.gitignore

dist文件夹下文件是要导出的文件,所以在.gitignore文件中把dist/去掉,这样上传代码的时候也会更新打包后的文件。

开发与生产

由于配置了webpack.base.conf.js,使得项目的开发与生产独立开来。

使用npm run dev进入开发环境,就可以看到组件的demo,方便调试。使用npm run build打包组件库。

发布到npm

在你登录了npm的情况下,在根目录输入命令行(每次更新代码执行同样操作)

npm version patch
npm publish

大功告成!现在你可以在其他地方使用npm install hg-vconponents下载自己写的组件库了。

Javascript 相关文章推荐
js汉字排序问题 支持中英文混排,兼容各浏览器,包括CHROME
Dec 20 Javascript
JS中 用户登录系统的解决办法
Apr 15 Javascript
详解JavaScript的Polymer框架中的通知交互
Jul 29 Javascript
JCrop+ajaxUpload 图像切割上传的实例代码
Jul 20 Javascript
AngularJS基础 ng-submit 指令简单示例
Aug 03 Javascript
JS正则替换掉小括号及内容的方法
Nov 29 Javascript
JS实现重新加载当前页面或者父页面的几种方法
Nov 30 Javascript
利用js的闭包原理做对象封装及调用方法
Apr 07 Javascript
Vue组件实例间的直接访问实现代码
Aug 20 Javascript
深入理解Vue 的钩子函数
Sep 05 Javascript
Angular6新特性之Angular Material
Dec 28 Javascript
基于vue 动态菜单 刷新空白问题的解决
Aug 06 Javascript
JS声明对象时属性名加引号与不加引号的问题及解决方法
Feb 16 #Javascript
JavaScript中严格判断NaN的方法
Feb 16 #Javascript
[原创]js实现保存文本框内容为本地文件兼容IE,chrome,火狐浏览器
Feb 14 #Javascript
jQuery实现鼠标响应式透明度渐变动画效果示例
Feb 13 #jQuery
jQuery实现鼠标响应式淘宝动画效果示例
Feb 13 #jQuery
jQuery实现的鼠标响应缓冲动画效果示例
Feb 13 #jQuery
浅谈实现vue2.0响应式的基本思路
Feb 13 #Javascript
You might like
如何使用动态共享对象的模式来安装PHP
2006/10/09 PHP
图书管理程序(二)
2006/10/09 PHP
PHP4实际应用经验篇(9)
2006/10/09 PHP
PHP+MYSQL开发工具及资源收藏
2007/01/02 PHP
Laravel框架Blade模板简介及模板继承用法分析
2019/12/03 PHP
document.all还是document.getElementsByName?
2006/07/21 Javascript
JavaScript 图像动画的小demo
2012/05/23 Javascript
JavaScript 处理Iframe自适应高度(同或不同域名下)
2013/03/29 Javascript
解析jquery中的ajax缓存问题
2013/12/19 Javascript
jquery判断元素是否隐藏的多种方法
2014/05/06 Javascript
js日期范围初始化得到前一个月日期的方法
2015/05/05 Javascript
jQuery里filter()函数与find()函数用法分析
2015/06/24 Javascript
JS封装的选项卡TAB切换效果示例
2016/09/20 Javascript
JavaScript中click和onclick本质区别与用法分析
2018/06/07 Javascript
微信小程序分享功能onShareAppMessage(options)用法分析
2019/04/24 Javascript
使用异步组件优化Vue应用程序的性能
2019/04/28 Javascript
layui 点击重置按钮, select 并没有被重置的解决方法
2019/09/03 Javascript
使用vue-cli3+typescript的项目模板创建工程的教程
2020/02/28 Javascript
[00:58]2016年国际邀请赛勇士令状宣传片
2016/06/01 DOTA
Python3.2中Print函数用法实例详解
2015/05/19 Python
Python3.5编程实现修改IIS WEB.CONFIG的方法示例
2017/08/18 Python
深入理解Django自定义信号(signals)
2018/10/15 Python
Python大数据之从网页上爬取数据的方法详解
2019/11/16 Python
Python chardet库识别编码原理解析
2020/02/18 Python
Django添加bootstrap框架时无法加载静态文件的解决方式
2020/03/27 Python
解决jupyter notebook打不开无反应 浏览器未启动的问题
2020/04/10 Python
CSS3 transforms应用于背景图像的解决方法
2019/04/16 HTML / CSS
HTML5 使用 sessionStorage 进行页面传值的方法
2018/07/02 HTML / CSS
纽约JewelryAffairs珠宝店:精细金银时尚首饰
2017/02/05 全球购物
VELTRA台湾:世界自由行专家
2017/08/15 全球购物
EJB的基本架构
2016/09/22 面试题
DELPHI面试题研发笔试试卷
2015/11/08 面试题
医学专业毕业生个人的求职信
2013/12/04 职场文书
教师作风整改措施思想汇报
2014/10/12 职场文书
Python预测分词的实现
2021/06/18 Python
Python 的 sum() Pythonic 的求和方法详细
2021/10/16 Python