<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Ulisses Ferreira</title>
    <description>The latest articles on DEV Community by Ulisses Ferreira (@ulissesferreira).</description>
    <link>https://dev.to/ulissesferreira</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F53637%2F61dd6dac-a31a-4b7a-8402-0aa164409099.jpg</url>
      <title>DEV Community: Ulisses Ferreira</title>
      <link>https://dev.to/ulissesferreira</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/ulissesferreira"/>
    <language>en</language>
    <item>
      <title>🌙 Moon - Vue 3 component library starter [Vite]</title>
      <dc:creator>Ulisses Ferreira</dc:creator>
      <pubDate>Sun, 25 Jul 2021 21:58:39 +0000</pubDate>
      <link>https://dev.to/ulissesferreira/moon-vue-3-component-library-starter-vite-o52</link>
      <guid>https://dev.to/ulissesferreira/moon-vue-3-component-library-starter-vite-o52</guid>
      <description>&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3qyxriablq3z40p03e5g.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3qyxriablq3z40p03e5g.PNG" alt="Moon component library homepage"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Hello Dev.to community 👋&lt;/p&gt;

&lt;p&gt;Today I wanted to share with you my latest side-project, a Vue 3 component library powered by Vite. &lt;/p&gt;

&lt;p&gt;As some of you might know Vue 3 is out and it's doing a great job offering a more lightweight alternative to React. I decided to dig into it only to find that most resources on the web are still talking about Vue 2.&lt;/p&gt;

&lt;p&gt;Having had to work on a component library at my job (using Vue 2) I decided to try and create one from scratch using the latest tech avaliable for Vue 3.&lt;/p&gt;

&lt;p&gt;My goal was to provide a perfectionist's dream setup with the fewest dependencies possible but including those that are really valuable for development.&lt;/p&gt;

&lt;p&gt;After researching about the best way to achieve this goal I settled with &lt;a href="https://vitejs.dev/" rel="noopener noreferrer"&gt;Vite&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Using Vite's library mode and VitePress (a Vite powered VuePress) I created a low config component library with documentation included. I called it &lt;a href="https://moon.ulissesferreira.dev/" rel="noopener noreferrer"&gt;🌙 Moon&lt;/a&gt;. I believe my setup is easy to replicate and could provide value for others trying to create a component library for Vue 3. The fact that Vite uses &lt;a href="https://esbuild.github.io/" rel="noopener noreferrer"&gt;esbuild&lt;/a&gt; also provides a great developer experience with blazing fast build speeds.&lt;/p&gt;

&lt;p&gt;Currently the component library includes the following utilities:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;ES Modules + UMD build&lt;/li&gt;
&lt;li&gt;ESLint + Prettier setup with individual commands&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.npmjs.com/package/rollup-plugin-visualizer" rel="noopener noreferrer"&gt;rollup-plugin-visualizer&lt;/a&gt; that allows you to check your bundle size breakdown&lt;/li&gt;
&lt;li&gt;Blazing fast build speed.&lt;/li&gt;
&lt;li&gt;Least amount of config possible&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;There are 13 components available and I intend to add some more that I feel are essential to most interfaces (like Tabs and Selects). These components were built with accessibility in mind, use as little JS as possible and try to keep the HTML markup as light as possible as well.&lt;/p&gt;

&lt;p&gt;I have already identified some possible improvements but I haven't had much time to work on them. Even though it's still a work in progress I am sure it will be of help for those researching about this topic.&lt;/p&gt;

&lt;p&gt;Feel free to fork it or take a look under the hood and get some inspiration for your own projects&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/ulissesferreira/moon" rel="noopener noreferrer"&gt;https://github.com/ulissesferreira/moon&lt;/a&gt;&lt;/p&gt;

</description>
      <category>vue</category>
    </item>
  </channel>
</rss>
