## Project setup 安装项目依赖
npm install
### Compiles and hot-reloads for development 启动开发环境,可以编译和热重载
npm run serve
### Compiles and minifies for production 编译生产包
npm run build
### Run your unit tests
npm run test:unit
### Lints and fixes files 语法审查
npm run lint
# 安装vant (本项目已安装)
npm i vant -S
# 安装插件
# 安装后不支持导入所有vant组件,需按需引入。
# npm i babel-plugin-import -D
# babel.config.js 文件中添加
# module.exports = {
# plugins: [
# ['import', {
# libraryName: 'vant',
# libraryDirectory: 'es',
# style: true
# }, 'vant']
# ]
# };
#注意!
不推荐导入全部vant组件
由于vant babel-plugin-import自动按需引用有bug
此处推荐使用 手动按需引用
// 引做公用组件。main.js中,写在 new Vue({...})之前避免报错
import Button from 'vant/lib/button';
import 'vant/lib/button/style';
Vue.use(Button)
// # 所有vue文件中直接使用
// <van-button>按钮</van-button>
<script>
import DatetimePicker from "vant/lib/datetime-picker";
import 'vant/lib/datetime-picker/style';
export default {
components: {
[DatetimePicker.name]: DatetimePicker
},
data() {
return {};
}
};
</script>
# 安装less (本项目已安装)
# 执行 style-resources-loader (本项目已安装)
//针对 cli3以上版本
npm i style-resources-loader vue-cli-plugin-style-resources-loader -D
# vue.config.js 中修改配置 (本项目已配置)
const path = require("path");
module.exports = {
...
pluginOptions: {
"style-resources-loader": {
preProcessor: "less",
patterns: [
//注意:试过不能使用别名路径
path.resolve(__dirname, "./src/assets/variable.less")
]
}
}
...
}
# 公用less文件
位置: src/assets/less/model.less
所有vue文件均可引用 model.less中的变量以及样式
//查看当前镜像代理
npm config get registry
//切换 淘宝镜像
npm config set registry http://registry.npm.taobao.org/
//切换 官方源地址
npm config set registry https://registry.npmjs.org/
//登录需要切换镜像代理为官方源
npm config set registry https://registry.npmjs.org/
//npm 登录
npm login
//发布组件到 npm
npm publish
为了统一并不与其他组件库重名,组件文件夹名为 gold-xx-xx ,名字使用小写加-
|--package
|--button-test
| |--src
| | |--css
| | | |--index.less
| | |
| | |--button-test.vue
| |
| |--index.js
|
|--index.js
<template>
<div class="button-test">
{{msg}}
</div>
</template>
<script>
export default {
name: "button-test",
props: {
msg: String
}
};
</script>
<style scoped lang="less">
@import "./css/index.less";
</style>
//引入 公用less变量
@import "../../../../static/less/_primaryParam.less";
.button-test-tt{
color:@color-primary;
}
import ButtonTest from "./src/button-test.vue";
//为组件提供 install 安装方法,供按需引入
ButtonTest.install = function(Vue) {
Vue.component(ButtonTest.name, ButtonTest);
};
// 默认导出组件
export default ButtonTest;
// 导入自定义组件 (此处引入了ButtonTest、GoldCard)
import ButtonTest from "./button-test";
import GoldCard from "./gold-card";
// 存储组件列表
const components = [ButtonTest, GoldCard];
//定义 install 方法,接收 Vue 作为参数。如果使用 use 注册插件,则所有的组件都将被注册
const install = function(Vue) {
// 判断是否可以安装
if (install.installed) return;
// 遍历注册全局组件
components.map(component => Vue.component(component.name, component));
};
// 判断是否是直接引入文件
if (typeof window !== "undefined" && window.Vue) {
install(window.Vue);
}
export default {
// 导出的对象必须具有 install,才能被 Vue.use() 方法安装
install,
// 以下是具体的组件列表
ButtonTest,
GoldCard
};
{
"name": "gh-gold", //其中的组件 name 推荐和创建的项目名一致
"version": "0.1.6",//版本号 上传npm 之前必须修改版本号
"private": false,//设置库为公用 (未解决bug:设为true,npm上传不成功,)
"keyword": "gh-gold model",//关键词
"description": "金探号公用组件库 0.1.6",//描述
"author": "huangheaven",//作者 建议与npm登录名一致
"main": "lib/index/index.js",//文件主入口
...
}
网上案例: Vue CLI3 搭建组件库并实现按需引入实战操作.
npm run build,
//./package.json文件中,配置文件主入口
{
...
"main": "lib/index/index.js",
...
}
# 如果登录失败 请切换镜像代理 官方源地址
npm config set registry https://registry.npmjs.org/
# 这是登录,前提是你已经在 npm 注册了账号
npm login
# 发布到 npm
npm publish
# 安装插件
npm install babel-plugin-component -D
// 对于使用 babel7 的用户,可以在 babel.config.js 中配置 (配置参数有待考察)
module.exports = {
...
plugins: [
['component', {
libraryName: 'gh-gold',
"styleLibraryName": "style"
}]
]
}
import Vue from "vue";
import { ButtonTest, GoldCard } from "gh-gold";
Vue.use(ButtonTest).use(GoldCard);
Vue.config.productionTip = false;
import { GoldCard } from "gh-gold";
export default {
name: "home",
components: {
GoldCard
},
methods: {}
};