How I am using composer to install Dolibarr modules

rabibsust

Ahmad Jamaly Rabib

Posted on May 8, 2023

How I am using composer to install Dolibarr modules

Those who don't know about Dolibarr, Dolibarr is a Open Source ERP and CRM system for businesses. It's codebase is written in PHP.

Here is the repository if you are interested. btw I don't think any developer will be comfortable working on this codebase first time πŸ˜…

It had a composer file to manage some dependency before but in the current stable version it is disabled. You can check the commit message here 😜

So anyway, to install any module we need to zip the module and upload via Dolibarr admin panel. Or we can copy the module to the htdocs/custom folder area. 😐

But it causes some issues when we are continuously updating modules and managing version control system for modules.

Also it causes some security risk when we open the upload functionality of the modules. 😱

And honestly why we shouldn't use composer to install modules? It felt like I am in the age of Dinosaurs. πŸ™„

So what we did was simple. Initialize the dolibarr project with composer. Created separate repositories for the modules.

And when we need to install any modules we just need to add that in the composer.json file.

{
    "name": "dolibarr/dolibarr",
    "description": "Dolibarr ERP & CRM is a modern and easy to use web software to manage your business",
    "license": "GPL-3.0-or-later",
    "require": {
        "myproject/dashboard": "dev-master",
        "myproject/report": "dev-master"
    },
    "repositories": [
        {
            "url": "git@github.com:myproject/dashboard.git",
            "type": "git"
        },
        {
            "url": "git@github.com:myproject/report.git",
            "type": "git"
        }
    ],
    "config" : {
       "vendor-dir" : "../vendor"
    }
}

Enter fullscreen mode Exit fullscreen mode

I did install the modules outside the project folder in the vendor directory and created symlink to show this as the custom folder inside htdocs directory.

And in the modules I added composer.json to make the module repositories as packages. Here is the composer.json file of the module

{
    "name": "myproject/dashboard",
    "description": "This module shows custom dashboard",
    "type": "dolibarr-module",
    "license": "MIT",
    "authors": [
        {
            "name": "Ahmad Jamaly Rabib",
            "email": "rabib@japantravel.com"
        }
    ],
    "require": {}
}

Enter fullscreen mode Exit fullscreen mode

I have kept the require as empty as it is not needed now but we can modify based on our needs.

So in this way whenever we add/update any module in our dolibarr main project we just need to run composer install or composer update. No need to copy the folders or making zip files to upload from dolibarr dashboard. 😎πŸ₯³

We can do the same approach for any PHP projects to reuse codes and reduce complexity. πŸ˜‡ Thank you for reading!

πŸ’– πŸ’ͺ πŸ™… 🚩
rabibsust
Ahmad Jamaly Rabib

Posted on May 8, 2023

Join Our Newsletter. No Spam, Only the good stuff.

Sign up to receive the latest update from our blog.

Related