Vue组件开发及NPM发布(TS版)
1 创建项目
1 | npm install -g @vue/cli // 安装Vue命令行工具,最新为 |
2 修改项目结构
- 将 src 文件夹改为 examples 作为组件的示例展示
- 删除 src 中的 assets,components 文件夹
- 将 public 中的 index.html 移入 examples 文件夹后,删除 public 文件夹
在项目根目录下,新增:
- components 文件夹:用于存放组件源码及导出文件
- types 文件夹:用于添加 TypeScript 的类型定义文件
- vue.config.js:用于修改默认的构建配置
- .npmignore 文件:设置要忽略发布的文件
最终项目主要结构如下:
1 | ├── components |
3 修改构建配置
3.1 添加 vue.config.js
1 | module.exports = { |
3.2 修改 package.json
1 | name: 包名,该名不能和NPM中已有的名称冲突; |
1 | { |
在 scripts 中添加:
1 | "scripts": { |
–-target : 构建目标,默认为应用模式这里修改为 lib 启用库模式
–name : 输出文件名称
–-dest : 输出目录,默认 dist,这里没有设置
3.3 修改.npmignore
1 | # 忽略目录 |
4 构建并发布*
4.1 构建
生成组件库:
1 | npm run lib |
实现对 examples 中应用的访问:
1 | npm run serve |
4.2 发布
首先需要在 npm 官网上注册一个账号,通过:
1 | npm adduser |
命令创建一个账户,或者在 npm 官网注册。
注册完成后在本地命令行中登录:
1 | npm login |
输入用户名、密码、邮箱:
执行发布命令,发布到 npm:
1 | npm publish |
如果以前改过 npm 的镜像地址,比如使用了淘宝镜像,就先改回来:
1 | npm config set registry http://registry.npmjs.org |
5 新增组件*
- 在 components 文件夹下创建新组件命名的文件夹,其中包含新组件的单文件组件.vue 和一个导出文件 index.ts。
1 | import 新的组件名 from "./新的单文件组件名.vue"; |
- 在 components 文件夹下的所有组件的入口文件 index.js 中添加
1 | // 在下方导入新增组件 |
- 在 types 文件夹下创建新组件的 d.ts 文件
1 | import { TUIComponent } from './component'; |
- 测试组件
在 examples 的 main.js 中导入组件,并 use。
待补充
在 App.vue 的模板中使用:
待补充
运行:
1 | npm run serve |
6 使用组件库*
ths-vue 是基于思路前端设计理念的 Vue UI 组件库,主要用于研发企业级前端产品。
特性
提炼自企业前端产品的交互语言和视觉风格。
开箱即用的高质量 Vue 组件。
支持环境
IE/Edge | Firefox | Chrome | Safari | Opera | ) Electron |
---|---|---|---|---|---|
IE9, IE10, IE11, Edge | last 2 versions | last 2 versions | last 2 versions | last 2 versions | last 2 versions |
兼容性
ths-vue 支持所有的现代浏览器和 IE9+。
如果你使用了 babel,强烈推荐使用 babel-polyfill 和 babel-plugin-transform-runtime 来替代以上两个 shim。不要同时使用 babel 和 shim 两种兼容方法。
安装
使用 npm 或 yarn 安装
推荐使用 npm 或 yarn 的方式进行开发,不仅可在开发环境轻松调试,也可放心地在生产环境打包部署使用,享受整个生态圈和工具链带来的诸多好处。
1 | npm install ths-vue --save |
如果网络环境不佳,推荐使用 cnpm。
完整引入
在 main.js 引入并注册:
1 | import Tvue from "ths-vue"; |
在组件中使用:
1 | <template> |
按需引入
使用 babel-plugin-import,在命令行中运行:
1 | npm i babel-plugin-import --save-dev |
修改 babel.config.js:
1 | presets: [ |
在 main.ts 中:
1 | import { HelloWorld } from "ths-vue"; |
7 注意事项
组件必须声明 name 属性,这个 name 就是组件的 HTML 标签。