smstw / sms-uni-dev

SMS universal development tools
0 stars 0 forks source link

沒有統一的我們自己的 Composer 位置 #2

Open asika32764 opened 10 years ago

asika32764 commented 10 years ago

Windwalker 與 JConsole 為了製作成 Sandbox 所以不能直接更新,元件內的 composer 又無法跟 plugin 外部共用,我們需要一個針對每個專案的統一 composer(或者 composer 支援 merge 額外 json 檔案又更好了),否則每次我們要裝 3rd library 都要全部 commit,檔案數量太重了。希望有一個接近根目錄的 composer 可以讓我們方便做更新

Joomla 3.4 的 composer.json 已經確定放在根目錄,vendor 確定放在 libraries/vendor,我們可以討論一下我們自己的 composer 要怎麼擺放。

asika32764 commented 10 years ago

目前官方整合 composer 的 PR 在這邊 https://github.com/joomla/joomla-cms/pull/3617

另外這是一個可以用 Composer 來安裝一般擴充套件的特殊功能,可以參考看看他們的概念 http://blog.joomlatools.com/2013/11/composer-for-joomla-an-extension-installer-for-developers.html https://github.com/joomlatools/joomla-composer

例如這樣就可以安裝 Ezset

    {
        "repositories": [
            {
                "type": "package",
                "package": {
                    "name": "vendor/ezset",
                    "type": "joomlatools-installer",
                    "version": "1.0.0",
                    "dist": {
                        "url": "https://github.com/asikart/ezset/archive/1.0.2.zip",
                        "type": "zip"
                    },
                    "require": {
                        "joomlatools/installer": "*"
                    }
                }
            }
        ],

        "require": {
            "vendor/ezset": "1.0.0"
        }
    }

我們自己的一些常用 package (不一定是 extension) 可以用類似的方法裝起來,省得還要丟進 packagist

asika32764 commented 10 years ago

目前構想:

composer.json 放在 libraries/sms 下或新開 sms 資料夾,到此刷新即可

SMS 的整合開發工具可以包成一個 package

{
    "require" : {
        "sms/dev-tools" : "1.*"
    }
}

然後之後我們要加裝的其他套件就往這邊塞

{
    "require" : {
        "sms/dev-tools" : "1.*",
        "paquettg/php-html-parser" : "*",
        "aws/sdk" : "*"
    }
}
asika32764 commented 10 years ago

這樣寫就可以安裝這個 repo 內的東西,不用丟上 packagist

{
    "require" : {
        "sms/dev" : "*"
    },
    "repositories": [
        {
            "type": "package",
            "package": {
                "name": "sms/dev",
                "version": "1.0",
                "dist": {
                    "url": "https://github.com/smstw/sms-uni-dev/archive/master.zip",
                    "type": "zip"
                },
                "autoload": {
                    "psr-4" : {
                        "" : "."
                    }
                }
            }
        }
    ]
}
asika32764 commented 10 years ago

我用一個新的 Joomla 來做測試了,目前運作良好,可惜 JConsole 不能用這種方式安裝

https://github.com/smstw/devsite

https://github.com/smstw/devsite/blob/master/sms/composer.json

LeoOnTheEarth commented 10 years ago

似乎一定要先有 joomla 的程式才能安裝?

我是在 windows 7 試的 只拿 composer.json 出來用 composer install 測試 下面是無法安裝後得到的訊息

Loading composer repositories with package information
Installing dependencies (including require-dev)
  - Installing sms/dev (1.0.4)
    Loading from cache

Warning: Uncaught exception 'ErrorException' with message 'require_once(Z:\New folder/includes/defines.php): failed to open stream: No such file or directory' in Z:\New folder\New folder\vendor\sms\dev\src\Composer\ExtensionInstallerPlugin.php:32
Stack trace:
#0 Z:\New folder\New folder\vendor\sms\dev\src\Composer\ExtensionInstallerPlugin.php(32): Composer\Util\ErrorHandler::handle(2, 'require_once(Z:...', 'Z:\\New folder\\N...', 32, Array)
#1 Z:\New folder\New folder\vendor\sms\dev\src\Composer\ExtensionInstallerPlugin.php(32): SMS\Composer\ExtensionInstallerPlugin::activate()
#2 phar://C:/ProgramData/Composer/bin/composer.phar/src/Composer/Plugin/PluginManager.php(81): SMS\Composer\ExtensionInstallerPlugin->activate(Object(Composer\Composer), Object(Composer\IO\ConsoleIO))
#3 phar://C:/ProgramData/Composer/bin/composer.phar/src/Composer/Plugin/PluginManager.php(239): Composer\Plugin\PluginManager->addPlugin(Object(SMS\Composer\ExtensionInstallerPlugin))
#4 phar://C:/ProgramData/Composer/bin/composer.phar/src/Compose in Z:\New folder\New folder\vendor\sms\dev\src\Composer\ExtensionInstallerPlugin.php on line 32

Call Stack:
    0.0180     246872   1. {main}() C:\ProgramData\Composer\bin\composer.phar:0
    0.0180     245568   2. require('phar://C:/ProgramData/Composer/bin/composer.phar/bin/composer') C:\ProgramData\Composer\bin\composer.phar:15
    0.1410    2411024   3. Composer\Console\Application->run() phar://C:/ProgramData/Composer/bin/composer.phar/bin/composer:43
    0.1540    2643192   4. Symfony\Component\Console\Application->run() phar://C:/ProgramData/Composer/bin/composer.phar/src/Composer/Console/Application.php:84
    0.1590    2733784   5. Composer\Console\Application->doRun() phar://C:/ProgramData/Composer/bin/composer.phar/vendor/symfony/console/Symfony/Component/Console/Application.php:124
    0.1640    2799344   6. Symfony\Component\Console\Application->doRun() phar://C:/ProgramData/Composer/bin/composer.phar/src/Composer/Console/Application.php:135
    0.1660    2799656   7. Symfony\Component\Console\Application->doRunCommand() phar://C:/ProgramData/Composer/bin/composer.phar/vendor/symfony/console/Symfony/Component/Console/Application.php:193
    0.1660    2799888   8. Symfony\Component\Console\Command\Command->run() phar://C:/ProgramData/Composer/bin/composer.phar/vendor/symfony/console/Symfony/Component/Console/Application.php:889
    0.1690    2801928   9. Composer\Command\InstallCommand->execute() phar://C:/ProgramData/Composer/bin/composer.phar/vendor/symfony/console/Symfony/Component/Console/Command/Command.php:252
    0.5290    5451136  10. Composer\Installer->run() phar://C:/ProgramData/Composer/bin/composer.phar/src/Composer/Command/InstallCommand.php:123
    0.5340    5520440  11. Composer\Installer->doInstall() phar://C:/ProgramData/Composer/bin/composer.phar/src/Composer/Installer.php:216
   21.3682   34197768  12. Composer\Installer\InstallationManager->execute() phar://C:/ProgramData/Composer/bin/composer.phar/src/Composer/Installer.php:543
   21.3682   34197832  13. Composer\Installer\InstallationManager->install() phar://C:/ProgramData/Composer/bin/composer.phar/src/Composer/Installer/InstallationManager.php:139
   21.3682   34198040  14. Composer\Installer\PluginInstaller->install() phar://C:/ProgramData/Composer/bin/composer.phar/src/Composer/Installer/InstallationManager.php:152
   21.5112   34538848  15. Composer\Plugin\PluginManager->registerPackage() phar://C:/ProgramData/Composer/bin/composer.phar/src/Composer/Installer/PluginInstaller.php:65
   21.5132   34552408  16. Composer\Plugin\PluginManager->addPlugin() phar://C:/ProgramData/Composer/bin/composer.phar/src/Composer/Plugin/PluginManager.php:239
   21.5132   34552568  17. SMS\Composer\ExtensionInstallerPlugin->activate() phar://C:/ProgramData/Composer/bin/composer.phar/src/Composer/Plugin/PluginManager.php:81

Fatal error: SMS\Composer\ExtensionInstallerPlugin::activate(): Failed opening required 'Z:\New folder/includes/defines.php' (include_path='.;C:\AppServer\php\PEAR') in Z:\New folder\New folder\vendor\sms\dev\src\Composer\ExtensionInstallerPlugin.php on line 32

Call Stack:
    0.0180     246872   1. {main}() C:\ProgramData\Composer\bin\composer.phar:0
    0.0180     245568   2. require('phar://C:/ProgramData/Composer/bin/composer.phar/bin/composer') C:\ProgramData\Composer\bin\composer.phar:15
    0.1410    2411024   3. Composer\Console\Application->run() phar://C:/ProgramData/Composer/bin/composer.phar/bin/composer:43
    0.1540    2643192   4. Symfony\Component\Console\Application->run() phar://C:/ProgramData/Composer/bin/composer.phar/src/Composer/Console/Application.php:84
    0.1590    2733784   5. Composer\Console\Application->doRun() phar://C:/ProgramData/Composer/bin/composer.phar/vendor/symfony/console/Symfony/Component/Console/Application.php:124
    0.1640    2799344   6. Symfony\Component\Console\Application->doRun() phar://C:/ProgramData/Composer/bin/composer.phar/src/Composer/Console/Application.php:135
    0.1660    2799656   7. Symfony\Component\Console\Application->doRunCommand() phar://C:/ProgramData/Composer/bin/composer.phar/vendor/symfony/console/Symfony/Component/Console/Application.php:193
    0.1660    2799888   8. Symfony\Component\Console\Command\Command->run() phar://C:/ProgramData/Composer/bin/composer.phar/vendor/symfony/console/Symfony/Component/Console/Application.php:889
    0.1690    2801928   9. Composer\Command\InstallCommand->execute() phar://C:/ProgramData/Composer/bin/composer.phar/vendor/symfony/console/Symfony/Component/Console/Command/Command.php:252
    0.5290    5451136  10. Composer\Installer->run() phar://C:/ProgramData/Composer/bin/composer.phar/src/Composer/Command/InstallCommand.php:123
    0.5340    5520440  11. Composer\Installer->doInstall() phar://C:/ProgramData/Composer/bin/composer.phar/src/Composer/Installer.php:216
   21.3682   34197768  12. Composer\Installer\InstallationManager->execute() phar://C:/ProgramData/Composer/bin/composer.phar/src/Composer/Installer.php:543
   21.3682   34197832  13. Composer\Installer\InstallationManager->install() phar://C:/ProgramData/Composer/bin/composer.phar/src/Composer/Installer/InstallationManager.php:139
   21.3682   34198040  14. Composer\Installer\PluginInstaller->install() phar://C:/ProgramData/Composer/bin/composer.phar/src/Composer/Installer/InstallationManager.php:152
   21.5112   34538848  15. Composer\Plugin\PluginManager->registerPackage() phar://C:/ProgramData/Composer/bin/composer.phar/src/Composer/Installer/PluginInstaller.php:65
   21.5132   34552408  16. Composer\Plugin\PluginManager->addPlugin() phar://C:/ProgramData/Composer/bin/composer.phar/src/Composer/Plugin/PluginManager.php:239
   21.5132   34552568  17. SMS\Composer\ExtensionInstallerPlugin->activate() phar://C:/ProgramData/Composer/bin/composer.phar/src/Composer/Plugin/PluginManager.php:81
asika32764 commented 10 years ago

是的,因為有另外裝幫助安裝 joomla extension 的 package

asika32764 commented 10 years ago

這個 repo 目前是設計成專為 joomla 環境運作

asika32764 commented 10 years ago

我重寫了 composer.json

不用 composer 裝外掛了,另外把 sms-code-sniffer 也裝上去

https://github.com/smstw/devsite/blob/master/sms/composer.json