开始
—— 使用vue 命令创建项目
vue init webpack-simple vhai-ui //创建vhai-ui 项目
cd vhai-ui
npm install //安装依赖
npm run dev //运行项目
npm run build //打包组件等搭建完之后,我们需要需改几个配置,来方便我们以后的发布组件
1、首先修改webpack.config.js文件(此处需要注意npm run build 和 npm run dev时需要修改output)
const NODE_ENV = process.env.NODE_ENV
module.exports = {
entry: NODE_ENV == 'development' ? './src/main.js' : './src/packages/index.js',
//打包组时注释此处。
output: {
path: path.resolve(__dirname, './dist'),
publicPath: '/dist/',
filename: 'build.js'
},
// 我们打包组件时,需要释放这块的代码,用来打包组件
// output: {
// // 修改打包出口,在最外级目录打包出一个 index.js 文件,我们 import 默认会指向这个文件
// path: path.resolve(__dirname, './dist'),
// publicPath: '/dist/',
// filename: 'vhai-ui.js',
// library: 'vhai-ui', // 指定的就是你使用require时的模块名
// libraryTarget: 'umd', // libraryTarget会生成不同umd的代码,可以只是commonjs标准的,也可以是指amd标准的,也可以只是通过script标签引入的
// umdNamedDefine: true // 会对 UMD 的构建过程中的 AMD 模块进行命名。否则就使用匿名的 define
// },
}2、修改package.json 让我们能够后续发布到npm上
"name": "vhai-ui", //你将发布到npm上的组件名称
"description": "A Vue.js vhai-ui",
"version": "1.0.0", //发布版本号
"author": "starmbest <starmbest@qq.com>",
"license": "MIT",
"private": false, //这里必须是false
"main": "dist/vhai-ui.js", //你打包好的组件文件目录快速上手
———— 下面我们可以根据情况开发组件了(我是这样区分文件的)
├── src/ // 源码目录
│ ├── packages/ // 组件目录
│ │ ├── copyright/ // 组件(以copyright为例)
| | |——index.vue // 组件代码
│ │ ├── index.js // 挂载插件
| | |——views // demo目录
│ ├── App.vue // 页面入口
│ ├── main.js // 程序入口
├── index.html // 入口html文件1、组件挂载文件:packages/index.js
通过此文件我们可以挂载组件,以便我们后期项目可以通过组件名调用组件库中的组件
//底部版权
import copyright from './copyright/index'
const components = [
copyright
]
const install = function(Vue, opts = {}) {
components.forEach(component => {
//component.name 是组件库中定义的name值,所以我们开发组件时一定要认真定义组件中的name名称
Vue.component(component.name, component);
});
};
/* istanbul ignore if */
if (typeof window !== 'undefined' && window.Vue) {
install(window.Vue);
}
export default {
install,
copyright
}2、引入组件库 :main.js
import Vue from 'vue'
import App from './App.vue'
import VhaiUI from './packages/index'
Vue.use(VhaiUI)
new Vue({
el: '#app',
render: h => h(App)
})好了,到这里我们的组件库就已经搭建完成了,需要更多的组件,根据自己情况创建目录在packages/index.js 中继续挂载。继续开发就可以了
发布到NPM
我们组件已经制作完成,我们这时想要发布到npm,应该怎么操作,
1、释放出我们编辑好的 webpack.config.js 文件中的打包组件代码
const NODE_ENV = process.env.NODE_ENV
module.exports = {
entry: NODE_ENV == 'development' ? './src/main.js' : './src/packages/index.js',
//打包组时注释此处。
//output: {
// path: path.resolve(__dirname, './dist'),
// publicPath: '/dist/',
// filename: 'build.js'
// },
// 我们打包组件时,需要释放这块的代码,用来打包组件
output: {
// 修改打包出口,在最外级目录打包出一个 index.js 文件,我们 import 默认会指向这个文件
path: path.resolve(__dirname, './dist'),
publicPath: '/dist/',
filename: 'vhai-ui.js',
library: 'vhai-ui', // 指定的就是你使用require时的模块名
libraryTarget: 'umd', // libraryTarget会生成不同umd的代码,可以只是commonjs标准的,也可以是指amd标准的,也可以只是通过script标签引入的
umdNamedDefine: true // 会对 UMD 的构建过程中的 AMD 模块进行命名。否则就使用匿名的 define
},
}2、执行npm run build
执行完成就能看到dist文件,说明我们组件js文件已经打包好了。可以直接复制这个js文件放到你想要的项目中,使用你开发的组件
├── dist/ // 源码目录
│ ├──vhai-ui.js // 组件js
│ ├──vhai-ui.js.map 3、发布到npm(如果没有npm账号,先到官网注册账号 www.npmjs.com/)
npm login //登录
Username:输入你注册的npm账号名
Password:你的npm账号密码
Email:你的npm绑定的邮箱
npm publish // 发布这里说明你已经发布成功
npm notice unpacked size: 69.6 kB
npm notice shasum: a8fa952416bfe3ad590015009f95fff606759efc
npm notice integrity: sha512-o6PmF5SE/+3r3[...]YwhPhWYS/X6JA==
npm notice total files: 17
npm notice
+ vhai-ui@1.0.0如果你想先不发布,想删除npm的包的话,可以执行 npm unpublist 你的包名 --force
项目引入发布的npm包
npm i vhai-ui -S //安装
//项目引入
import VhaiUI from 'vhai-ui'
Vue.use(VhaiUI)这样我们就可以自己开发组件库,自己使用了。当然你不想开源自己的UI库,可以不发布到npm,纯属小白一枚,个人开发总结经验,如有错误之处,还请指正