What I learned from developing my first Laravel Package.
Published: 2022-05-03 19:50:01

> This post was originally written 01 Mar 2022

After about a week of development, today I published my first Laravel Package, Laradocgen. It's a  simple package that turns Markdown files into a static HTML website to display documentation for Laravel apps. **Here is what I learned.**

Firstly, some context as to why I created the package.
If you are reading this on my blog, you probably already know that I created it as part of my [Laravel Blog Starter Kit](https://github.com/caendesilva/laravel-blogkit/) which I also made to practice Laravel. I wanted to make some documentation for the kit and started looking into templates so I could just focus on the content. While doing this I realized something. 

I had already created a Markdown file-parser for the blog which reads .md files in a directory and injects them as models into an Eloquent collection, so why not build on that?

I knew that while I did not need to make it into a package, I have never created a package before and I thought it would be a good experience to have.

Often programming boils down to identifying and solving a problem. The problem I was facing was not how to create a documentation site, or to create the first static site builder. I know there are countless of those already. And I know I could have just done this with plain PHP without Laravel. **The problem I had was that I did not know how to create a package for Laravel and I wanted to learn.**

I used Beyond Code's service Laravel Package Boilerplate to get started. I just had to fill in some details and then I could download a ZIP file of my package.
![Screenshot of the website](https://cdn.desilva.se/static/media/blog-posts/what-i-learned-from-developing-a-laravel-package/laravelpackageboilerplate.com.png)

In short:
* I learned how to create a composer package (obviosly)
* I learned how to build a service-provider and bind a singleton and how to use facades
* I learned how to use PHPDocumentor and how to properly use PHPDoc tags
* I learned (the basics) of PHPStorm
* I learned how to create comments in Markdown
* I learned how to use PHP to create, modify and read files.
* I learned (with the risk of duning-krugering myself: an intermediate level of) bash scripting for the build/test script. As well as \*nix commands like sed to modify files with the power of Linux.
* I learned how to use a local repository in composer
* I got to practise writing tests, refactor code, document everything.
* I also learned the value of micro-commits in Git, and also how and when it makes sense to merge commits before pushing to remote.
* I learned how to use and extend the Leauge/CommonMark package and to dynamically add extensions
* I learned how to use CodeSniffer to validate and fix my code, and to ensure I follow the Laravel coding standards (PSR-2) which I also got to learn more about.

Check out Laradocgen on GitHub: https://github.com/caendesilva/laradocgen

May update: A lot has happened since I created Laradocgen and I have learned even more. I'm currently working on HydePHP which includes a documentation site builder that I think is way better. I am also working on V2 of Laradocgen which I'm calling Lagrafo.

You can find HydePHP at https://hydephp.github.io/!