从0开始用vue-cli3创建一个leaflet地图组件npm包(1)
用过leaflet的朋友应该觉得它很好用,但同时也很麻烦,因为我们要用它需要安装很多对应的插件,而且没有官方的中文文档。只能依靠有道快译之类的软件来翻译。有幸碰到大佬翻译的文章,所以打算用vue-cli3从头搭建一个属于我们leaflet的地图组件包,把leaflet的各种插件功能集成在一起,做成第一个开箱即用本文将简要介绍如何配置以及如何上传npm包。第一步是为我们的npm包开发创建一个vue项目。1.1创建一个vue项目,为工作做准备。使用vuecreate创建一个项目。项目创建部分没做的我已经介绍多了。相信看到这篇文章的小伙伴应该能够创建我使用的配置,包括ts和router。考虑到自己虽然一直在制作npm包,但还是想在项目中测试展示给小伙伴们。为了更好的观看效果,我使用了路由器。创建的目录是1.2。更改vue目录结构。首先,我将src重命名为doc,作为以后调用组件测试和展示组件的项目。然后创建一个vue.config.js文件进行相应的配置。将entry入口改为doc文件夹constpath=require('path');constmerge=require('webpack-merge')module.exports={lintOnSave:false,pages:{index:{//页面入口entry:"doc/main.ts",//模板源模板:"public/index.html",//输出文件名filename:"index.html"}},};然后运行项目没有任何问题。第一部分准备工作完成,开始下一个任务。doc文件夹作为我们以后测试组件和展示组件的项目文件夹。第二步开始编写我们的npm内容2.1开始编写npm包接下来创建一个packages文件夹作为我们npm编写组件在packages文件夹中创建一个test文件夹作为我们的test文件夹进行简单的测试。使用测试文件夹,我创建了一个index.ts文件和src文件夹index.ts用于配置注册的组件并暴露它们。src是我们的内容文件夹。在src文件夹中,我创建了一个index.vue作为我们编写组件的地方。2.2Writeasimpledemofortestinguse//writeasimpledemoasatestusing测试组件
2.3暴露组件接口在test文件夹下创建的index.ts文件中写入我们的代码,在index.ts中获取我们的src代码并将其注册为组件并将其公开name,test);};exportdefaulttest;2.4当前目录结构第三步配置全局注册组件3.1编写全局注册文件此时,虽然我们写了一个简单的demo组件,但是还是做不出来波甚至报告错误,但我们要小心。下一步更为关键。在packages文件下创建一个index.ts,获取我们的Write组件并导出//Importasinglecomponentimporttestfrom'./test'//将组件保存在数组结构中,方便遍历constcomponents=[test];//定义安装方法constinstall:any=function(Vue:any){if(install.installed)返回;install.installed=true;//遍历并注册全局组件components.map(component=>{//Vue.component(component.name,component);Vue.use(component)});};if(typeofwindow!=="undefined"&&window.Vue){install(window.Vue);}exportdefault{//导出的对象必须有一个安装方法install,//Componentlist...components};3.2完成组件的全局编写就大功告成了!接下来要做的就是先在项目中测试第四步:在项目中测试4.1在项目中测试我们的组件是否可以正常运行参考组件我们可以去我们的doc文件夹中检查我们刚刚写的测试组件是否可以可以正常使用。首先要做的是在doc/main.ts中引入我们刚刚写的组件importVuefrom"vue";importAppfrom"./App.vue";importtestfrom"../packages/index";//引入组件Vue.use(test);//注册Vue.config.productionTip=false;newVue({render:(h)=>h(App),}).$mount("#app");4.2在项目中使用刚刚编写的测试组件,因为在main中进行了全局注册,所以可以直接使用组件名
test<测试>