Ferramentas do usuário

Ferramentas do site


public:asset-packagist

Gerenciamento de dependências JS no PHP com composer

O Composer

O composer é a ferramenta padrão de gerenciamento de dependências no php. Se você ainda não usa composer considere adotá-lo no seu próximo projeto. Ele permite baixar e atualizar pacotes de bibliotecas php e provê o autoload das classes dos pacotes e de suas classes.

Os pacotes baixados são colocados na pasta vendor/ fora do caminho do servidor web (apache) de forma a não ficar disponível diretamente para os navegadores. Dessa forma uma estrutura de pasta comumente utilizada para um projeto php seria:

projeto/
  src/
  vendor/
  www/
    index.php
  config.php

Nessa estrutura a pasta src/ possui as classes do seu projeto, a pasta www/ é a pasta publicada pelo servidor e a pasta vendor/ possui as dependências instaladas pelo composer.

Num repositório git, a pasta vendor/ é colocada no .gitignore para que não seja adicionada ao repositório.

Dependências JS e HTML

Quando precisamos incorporar o bootstrap, por exemplo, até existe o pacote no composer mas recorremos ao bower ou npn pois são dependências relacionadas a javascript e html e não ao php. Dessa forma é necessário ter outro gerenciador de pacotes para instalar os chamados assets, que ficarão em uma pasta dentro de www/ pois deve ficar acessível publicamente. A árvore de pastas ficaria assim:

projeto/
  src/
  vendor/
  www/
    assets/  <-----
    index.php
  config.php

Uma solução com composer

Descobri recentemente o site https://asset-packagist.org/ que procura pacotes npn e bower e transforma em pacotes compativeis com composer. Para isso basta configurar esse site como source de pacotes no arquivo composer.json.

Isso já ajuda imensamente permitindo utilizar somente o composer para gerenciar todas as dependências do projeto. Dessa forma o bootstrap pode ser instalado com o comando

composer require npn-asset/bootstrap

ou se preferir

composer require bower-asset/bootstrap

Resta ainda o problema do composer colocar os pacotes na pasta vendor/ não pública. A solução está no pacote oomphinc/composer-installers-extender que permite instalar pacotes em pastas diferentes.

Abaixo segue um exemplo de configuração do composer.json instalando as bibliotecas do bootstrap e jquery na pasta www/assets/. Lembrando que se estiver usando git essa pasta também deverá ir para o .gitignore.

"require": {
    "oomphinc/composer-installers-extender": "^1.1",
    "bower-asset/bootstrap": "^3.3",
    "npm-asset/jquery": "^2.2"
},
"extra": {
    "installer-types": ["bower-asset", "npm-asset"],
    "installer-paths": {
        "www/assets/{$name}/": ["type:bower-asset", "type:npm-asset"]
    }
},
"repositories": [
    {
        "type": "composer",
        "url": "https://asset-packagist.org"
    }
]

Espero que seja útil. Qualquer dúvida estou à disposição pelo email kawabata em usp.br.

public/asset-packagist.txt · Última modificação: por 127.0.0.1