宝哥软件园

利用Vue cli3库模式构建组件库并发布到npm的过程

编辑:宝哥软件园 来源:互联网 时间:2021-08-29

目前市场上有各种UI组件库,比如Element、iView,实力毋庸置疑。但是我们面临着越来越复杂的需求。当它们不再能满足我们的需求时,就需要开发一套属于我们自己团队的组件库。

因此,本文的目的是使读者能够制作一个简单的插件供人们使用,并构建和维护一个组件库。

下面这个简单的颜色选择器插件vColorPicker讲述了从开发到上线再到npm的过程。

VColorPicker插件DEMO

一.技术堆栈

如何通过新版本的脚手架创建一个项目,这里就不提了。自己看官方文件。

新支架的库模式Vue-cli3:允许我们轻松创建和打包库npm:组件库将存储在npm webpack中:修改配置需要一点webapck的知识。二.概述

如果我们想要构建一个组件库,我们必须首先有一个大概的想法。

规划目录结构配置项目,支持目录结构编写组件编写样例配置使用库模式打包编译发布到npm III。规划目录结构

1.创建项目

使用指定目录中的命令创建默认项目,或根据自己的需要选择它。

$ vue创建。

2.调整目录

我们需要一个目录存储组件,一个目录存储示例,并按照以下方式转换目录。

.|-示例//原始src目录,更改为示例示例演示|-包//添加了用于编写存储组件的包.

第四,配置项目以支持新的目录结构

在上一步的目录转换之后,我们会遇到两个问题。

src目录被重命名为示例,这使得项目无法运行新添加的packages目录,该目录没有添加到webpack编译中注意:cli3提供了一个可选的vue.config.js配置文件。如果此文件存在,它将被自动加载,并且项目和webpack的所有配置都在此文件中。

1.重新配置门户并修改配置中的页面选项

新的Vue CLI支持使用vue.config.js中的pages选项构建多页应用程序.

使用页面将条目修改为这里的示例

module.exports={//将src目录修改为示例目录页: { index 3360 { entry : ' examples/main . js ',template3360' public/index.html ',Filename: ' index.html ' } } }。支持包目录的处理,并修改配置中的chainWebpack选项

Packages是一个新的目录,默认情况下webpack不处理这个目录,所以需要为这个目录添加配置支持。

ChainWebpack是一个接收基于webpack-chain的ChainableConfig实例的函数。支持对内部webpack配置进行更细粒度的修改。

module.exports={//将src修改为示例页面: { index : { entry : ' examples/main . js ',模板:' public/index.html ',Filename: 'index.html'} },//扩展webpack配置。添加包以编译链web pack : config={ config . module . rule(' js ')。include.add ('packages ')。end()。使用(' babel ')。loader ('babel-loader ')。点击(选项={//修改其选项.

网络包链

动词(verb的缩写)书写组件

上面,我们已经配置了对新目录架构的支持,然后我们尝试编写组件。让我们以发布到npm的一个小插件为例。

GitHub-颜色选择器:vcolorpicker

1.创建新组件

在packages目录下,所有单独的组件都以文件夹的形式存储,因此在这里创建一个目录。在颜色选择器/目录下创建src/目录来存储组件源代码。在/color-picker目录下创建index.js文件,以提供对组件的外部引用。

修改文件/包/颜色选择器/index.js以提供对外部世界的引用。

#/packages/color-picker/index . js//导入组件,这些组件必须声明名称import color picker from '。/src/color-picker . vue//提供组件的安装方法。用于导入颜色选择器=函数(vue){ vue.component(color picker . name,color picker)}//导出默认colorPicker2。集成所有组件并将其导出到外部,即一个完整的组件库

修改/packages/index.js文件以导出整个组件库。

//导入颜色选择器组件从“”导入颜色选择器。/color-picker//store components list const components=[color picker]//定义安装方法并接收Vue作为参数。如果注册一个插件使用,那么所有的组件都会注册const install=function (Vue) {//判断是否安装if (install.installed) return //遍历注册的全局组件components.map (component=vue。组件(组件。name,component))}//判断是否直接导入文件if (typeof window!==' undefined ' window . vue){ install(window . vue)} export default {//导出的对象必须有install,才能由Vue.use()方法安装。//以下是具体的组件列表colorPicker} VI。写一个例子

1.导入示例中的组件库

从“vue”导入vue,从“导入应用程序”。/app . vue//import组件库从导入颜色选择器。/./packages/index//register组件库vue . use(color picker)vue . config . production tip=false new vue({ render :h=h(app)})。$ mount ('# app') 2。在示例中使用组件库中的组件

在上一步向Vue.use()进行全局注册后,可以直接在任何页面上使用,无需介绍。当然,也可以根据需要引入。

模板color picker v-model=' color ' v-: change=' headlechangegcolor '/color picker/templatescript export default { data(){ return { color : ' # ff 0000 ' } } },methods : { headlechangegcolor(){ console . log(' color change ')} } }/script VII。发布到npm,以便在项目中直接参考

到目前为止,我们已经开发了一个完整的组件库,然后将其发布到npm供以后使用。

1.在package.js中添加编译到库中的命令

在库模式下,Vue是外部的,这意味着即使将Vue引入到代码中,打包的文件也不包含Vue。

Vue Cli3构建目标:库

下面,我们在脚本中添加一个新命令npm run lib

-target:构建目标,默认情况下是应用程序模式。在此修改以启用lib的库模式。-dest:输出目录,默认dist。在这里,我们将其更改为lib [entry] :最后一个参数是入口文件,默认值是src/App.vue这里我们指定编译包/组件库目录。脚本“: {//.”lib ' : ' vue-CLI-service build-targetlib-name vcolorepicker-destlibpackages/index . js ' }执行编译库命令

$ npm运行库

2.在package.json文件中配置发布到npm的字段

namversiondescriptionmainkeywordpauthorprivatelinse

以下是参考设置

{'name' :' vcolorepicker ',' version' :' 0.1.5 ',' description' : '基于Vue的颜色选择器',' main ' : ' lib/vcolorepicker . UMD . min . js ',Keyword' :' vcolorepicker颜色选择器颜色选择器',' private' : false} 3。添加。npmignore文件并设置为忽略已发布的文件

当我们发布到npm时,只需要发布编译后的lib目录、package.json和README.md。所以我们需要设置忽略目录和文件。

就像。gitignore,需要提交什么文件取决于他们的实际情况。

#忽略目录示例/包/公共/#忽略指定的文件vue . config . jsbabel . config . js * . map 4 .登录npm

首先,您需要在npm注册一个帐户,注册过程很简单。

如果配置了淘宝镜像,请先将其设置回npm镜像:

$ NPM配置集注册表http://registry.npmjs.org然后在终端执行登录命令,并输入用户名、密码和电子邮件地址登录。

$ npm登录

5.发布到npm

执行发布命令将组件发布到npm

$ npm发布

6.出版很成功

发布成功后等几分钟,可以在npm官网搜索。以下是刚刚提交的vcolorpicker

摘要

以上是边肖引入的Vue cli3库模式,构建组件库发布到npm,希望对大家有所帮助。如果你有任何问题,请给我留言,边肖会及时回复你。非常感谢您对我们网站的支持!

更多资讯
游戏推荐
更多+