Monday, January 24, 2022

[FIXED] Composer doesnt update autoload namespace

Issue

Composer not updating autoload_namespaces.php file, despite downloading package normaly. Can't understand where i did a mistake. If i load something from packagist, namespaces file updating successfully.

Project structure

Structure

Main Composer.json

{
    "repositories":[
        {
            "type": "package",
            "package": {
                "name": "test/framework",
                "version": "1.0.0.1",
                "dist": {
                    "url": "http://localhost/repo/1.zip",
                    "type": "zip"
                }
            }
        }
    ],

    "require": {
        "test/framework": "*"
    }
}

Package composer.json

{
    "name": "test/framework",
    "type": "library",
    "require": {
        "php": ">=5.2.4"
    },
    "autoload": {
        "psr-0" : {
            "Test" : "lib/"
        }
    }
}

autoload_namespaces.php

<?php

// autoload_namespaces.php @generated by Composer

$vendorDir = dirname(dirname(__FILE__));
$baseDir = dirname($vendorDir);

return array(
);

Solution

You are downloading the package defined in the repositories via zip.

https://getcomposer.org/doc/05-repositories.md#package-2

In this case I feel you should define the package definition at the same place. See the above link for the example which contains autoload definition defined.

{
    "repositories":[
        {
            "type": "package",
            "package": {
                "name": "test/framework",
                "version": "1.0.0.1",
                "dist": {
                    "url": "http://localhost/repo/1.zip",
                    "type": "zip"
                },
                "autoload": {
                    "psr-4" : {
                        "Test\\": "lib"
                    }
                }
            }
        }
    ],

    "require": {
        "test/framework": "*"
    }
}

You can also try some variation see my post over http://harikt.com/blog/2014/05/29/hidden-gems-of-composer/

PS : psr-4 is the recommended way for it can autoload psr-0 structured classes. See https://getcomposer.org/doc/04-schema.md#autoload



Answered By - Hari K T

No comments:

Post a Comment

Note: Only a member of this blog may post a comment.