vue init webpack-simple my-project
cd my-project
npm i
npm run dev
为了方便管理更多的组件,我们这里在src目录下面新建了一个myPlugin的目录,在这里面存放我们开发的组件,
我这里是写了两个组件,一个是cropper,一个是Pagination,scss用来存放样式,有封装的js方法就建个js目录,没有就没必要。然后再建一个你写的vue文件,和一个index.js(为什么每个组件会建立一个index.js,后边会提到,按步骤继续走)。
<template>
<div id="app">
<pagination :totalPage=15 :totalSize=300 @onChange='tap'></pagination>
<cropper></cropper>
</div>
</template>
<script>
import pagination from './myPlugin/pagination/index.vue'
import cropper from './myPlugin/cropper/index.vue'
export default {
name: 'app',
data () {
return {
}
},
methods:{
tap(s){
console.log(s,'出来了哈哈哈')
}
},
components:{
pagination,
cropper
}
}
</script>
<style lang="scss">
</style>
import ldcPagination from './index.vue';
ldcPagination.install = Vue => Vue.component(ldcPagination.name, ldcPagination);//.name就是开始说的vue文件暴露出来的name名,ldcPagination整个组件
export default ldcPagination;
分析下代码(再不懂得去看下vue构造器),
第一步引入了ldcPagination组件
第二步定义了一个数组,可用来存放引入的组件,其目的是为了下方的insatll函数循环注册了一次引入ldc-ui组件后,vue.use(ldc-ui)就可以使用全部的组件,无需单个引入,install别忘了default出去。
ps:如果你是单个的组件可以直接省略 中间所有步骤,直接在这里import引入,export default出去就行
import ldcPagination from './Pagination/index.js';
const components = [
ldcPagination
]
const install = function(Vue, opts = {
}) {
components.forEach(component => {
Vue.component(component.name, component);
});
}
if (typeof window !== 'undefined' && window.Vue) {
install(window.Vue);
}
export default {
install,
ldcPagination
}
var path = require('path')
var webpack = require('webpack')
const NODE_ENV = process.env.NODE_ENV;
module.exports = {
//entry: './src/main.js',
//output: {
// path: path.resolve(__dirname, './dist'),
// publicPath: '/dist/',
// filename: 'build.js'
// },
entry: NODE_ENV == 'development' ? './src/main.js' : './src/myPlugin/index.js',
output: {
path: path.resolve(__dirname, './dist'),
publicPath: '/dist/',//路径
filename: 'ldc-ui.js',//打包之后的名称
library: 'ldc-ui', // 指定的就是你使用require时的模块名
libraryTarget: 'umd', // 指定输出格式
umdNamedDefine: true // 会对 UMD 的构建过程中的 AMD 模块进行命名。否则就使用匿名的 define
},
...
}
version是版本号,发布一次之后,再次发布的时候必须更改此字段,否则会报错
可自行对比个人的json文件,就多了俩行代码,分别是private和main
private是否为私人的,这里选择false
main代表打包之后的文件路径
"name": "ldc-ui",
"description": "A Vue.js UI",
"version": "1.0.2",
"author": "",
"license": "MIT",
"private": false,
"main": "dist/ldc-ui.js",
"scripts": {
"dev": "cross-env NODE_ENV=development webpack-dev-server --open --hot",
"build": "cross-env NODE_ENV=production webpack --progress --hide-modules"
},
"dependencies": {
"vue": "^2.5.11"
},
在准备的最后最好是,建立一个.npmignore文件在里面屏蔽掉不需要上传的累赘,像我就屏蔽了如下内容(类似于git上传仓库中的.gitignore,直接建立文件重名名是不行的,最好用命令行去创建,不会建的百度一下)
.*
*.md
*.yml
build/
node_modules/
src/
test/
1,去npm官网注册一个npm账号,按照步骤。
2,注册成功之后,在项目目录下的cmd命令行中输出
npm login 登陆你的用户,密码
npm publish 进行发布