What I learned from developing my first Laravel Package.

CodeWithCaen - May 3 '22 - - Dev Community

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 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

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/!

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .