内容简介:最近公司项目比较多,不同的项目中公用的组件,如何避免因为一个需求的变动,造成所有项目都要拿过来修改,我们想到把公共的部分抽取出来做为一个组件,常见的组件模式有:本文章介绍
最近公司项目比较多,不同的项目中公用的组件,如何避免因为一个需求的变动,造成所有项目都要拿过来修改,我们想到把公共的部分抽取出来做为一个组件,常见的组件模式有:
npm
本文章介绍 登录组件 如何从0开始创建一个 vue
组件发布到 npm
上 本项目案例
一、依赖环境
node vue-cli
二、使用 vue-cli
构建一个项目及基本配置
-
1、创建一个基本的项目
vue init webpack-simple maucash(项目名) 复制代码
-
2、项目的基本结构
-
3、本项目是基于
iview
的基础上,需要根据官网的方式安装与配置iview
连接地址
三、本地调试
-
1、在
App.vue
中直接引入本地的组件import maucashLogin from "./packages/maucash-login/maucash-login"; 复制代码
-
2、
maucash-login
组件和我们本地写一般的vue
组件一样的,附加组件之间的通讯
四、本地组件测试没问题,改造成 vue
插件类型的
-
1、在组件的文件夹下创建一个
index.js
文件// 引入组件 import MaucashLogin from './maucash-login' MaucashLogin.install = Vue => Vue.component(MaucashLogin.name, MaucashLogin); if (typeof window !== 'undefined' && window.Vue) { window.Vue.use(MaucashLogin); } export default MaucashLogin 复制代码
-
2、在与
packages
同级下创建一个index.js
的文件(一个包下可能有多个组件)import Maucash from './packages/maucash-login/index.js'; const components = [ Maucash, ] const install = function(Vue, opts = {}) { components.map(component => { Vue.component(component.name, component); }) } /* 支持使用标签的方式引入 */ if (typeof window !== 'undefined' && window.Vue) { install(window.Vue); } export default { install, Maucash, } 复制代码
五、修改配置文件
-
1、修改
package.json
文件{ "name": "maucash", "description": "maucash中常用组件抽取", "version": "1.0.2", "author": "kuangshp <kuangshp@126.com>", // 开源协议 "license": "MIT", // 因为组件包是公用的,所以private为false "private": false, // 配置main结点,如果不配置,我们在其他项目中就不用import XX from '包名'来引用了,只能以包名作为起点来指定相对的路径 "main": "dist/maucash.js", "scripts": { "dev": "cross-env NODE_ENV=development webpack-dev-server --open --hot", "build": "cross-env NODE_ENV=production webpack --progress --hide-modules" }, "dependencies": { "axios": "^0.18.0", "iview": "^2.14.1", "style-loader": "^0.23.1", "url-loader": "^1.1.2", "vue": "^2.5.11" }, // 指定代码所在的仓库地址 "repository": { "type": "git", "url": "git+git@git.wolaidai.com:maucash/maucash.git" }, // 指定打包后,包中存在的文件夹 "files": [ "dist", "src" ], // 指定关键词 "keywords": [ "vue", "maucash", "code", "maucash code" ], // 项目官网的地址 "homepage": "https://github.com/kuangshp/maucash", "browserslist": [ "> 1%", "last 2 versions", "not ie <= 8" ], "devDependencies": { "babel-core": "^6.26.0", "babel-loader": "^7.1.2", "babel-plugin-transform-runtime": "^6.23.0", "babel-preset-env": "^1.6.0", "babel-preset-stage-3": "^6.24.1", "cross-env": "^5.0.5", "css-loader": "^0.28.7", "file-loader": "^1.1.4", "node-sass": "^4.5.3", "sass-loader": "^6.0.6", "vue-loader": "^13.0.5", "vue-template-compiler": "^2.4.4", "webpack": "^3.6.0", "webpack-dev-server": "^2.9.1" } } 复制代码
-
2、修改
.gitignore
文件因为要用
dist
文件夹,所以在.gitignore
文件中把dist/
去掉。 -
3、修改
webpack.config.js
文件var path = require('path') var webpack = require('webpack') const NODE_ENV = process.env.NODE_ENV; module.exports = { entry: NODE_ENV == 'development' ? './src/main.js' : './src/index.js', output: { path: path.resolve(__dirname, './dist'), publicPath: '/dist/', filename: 'maucash.js', library: 'maucash', libraryTarget: 'umd', umdNamedDefine: true }, ... } 复制代码
以上所述就是小编给大家介绍的《手把手教你发布一个vue组件到npm上》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- React 组件库 uiw 1.5.1 发布,新增 2 个组件
- Vue 组件库 HeyUI@1.17.0 发布,新增 Skeleton 组件
- React 组件库 uiw 3.3.0 发布,组件增强了呢
- Vue 组件库 heyui@1.18.0 发布,新增地址选择、图片预览组件
- Hyperf 发布国际化组件及多个组件 v1.0.13 版本
- React 组件库 uiw 3.4.0 发布,Tree组件增强了呢
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。