摘要:關(guān)于一些學(xué)習(xí)和理解不是一個包管理器。其中一些庫依賴于其他庫。范圍通過使用比較操作符可以指定有效的版本范圍。賦值運算符這對于遵循語義化版本號的項目非常有用。指定最低版本,但允許版本號的最后一位數(shù)字上升。
關(guān)于composer一些學(xué)習(xí)和理解
Composer 不是一個包管理器。是的,它涉及 "packages" 和 "libraries",但它在每個項目的基礎(chǔ)上進行管理,在你項目的某個目錄中(例如 vendor)進行安裝。默認情況下它不會在全局安裝任何東西。因此,這僅僅是一個依賴管理。
這種想法并不新鮮,Composer 受到了 node"s npm 和 ruby"s bundler 的強烈啟發(fā)。而當時 PHP 下并沒有類似的工具。
Composer 將這樣為你解決問題:
你有一個項目依賴于若干個庫。
其中一些庫依賴于其他庫。
你聲明你所依賴的東西。
Composer 會找出哪個版本的包需要安裝,并安裝它們(將它們下載到你的項目中)。
下載安裝composer因為laravel是使用composer管理的,所以一切以laravel為基礎(chǔ)。
這里補充的是:
因為某些原因,訪問國外的composer資源網(wǎng)站很慢,導(dǎo)致composer install或者update的時候經(jīng)常連接超時而出錯,所以改為中國鏡像
全局: composer config -g repo.packagist composer https://packagist.phpcomposer.com 局部項目(需要在項目當前目錄下執(zhí)行): composer config repo.packagist composer https://packagist.phpcomposer.com
執(zhí)行完命令后會在composer.json文件里面增加這段,這樣就代表添加中國鏡像成功了,以后執(zhí)行composer install或者update之類的命令的時候就會優(yōu)先使用這個鏡像
"repositories": { "packagist": { "type": "composer", "url": "https://packagist.phpcomposer.com" } }
關(guān)于composer.json文件用composer selfupdate來保持composer工具本身的版本更新
{ "name": "laravel/laravel", "description": "The Laravel Framework.", "keywords": ["framework", "laravel"], "license": "MIT", "type": "project", "require": { //這里是告訴composer必須要安裝的項目,相當于生產(chǎn)環(huán)境 "php": ">=5.5.9", "laravel/framework": "5.2.*", //require 需要一個 包名稱,這個就是包名稱 "laravelcollective/html": "5.2.*", "yuanchao/laravel-5-markdown-editor": "dev-master" }, "require-dev": { //這個是開發(fā)需要安裝的項目,相當于開發(fā)環(huán)境,可以通過-no-dev來取消安裝這個項目里面的包 "fzaninotto/faker": "~1.4", "mockery/mockery": "0.9.*", "phpunit/phpunit": "~4.0", "symfony/css-selector": "2.8.*|3.0.*", "symfony/dom-crawler": "2.8.*|3.0.*" }, "autoload": { "classmap": [ "database" ], "psr-4": { "App": "app/" } }, "autoload-dev": { "classmap": [ "tests/TestCase.php" ] }, "scripts": { "post-root-package-install": [ "php -r "copy(".env.example", ".env");"" ], "post-create-project-cmd": [ "php artisan key:generate" ], "post-install-cmd": [ "IlluminateFoundationComposerScripts::postInstall", "php artisan optimize" ], "post-update-cmd": [ "IlluminateFoundationComposerScripts::postUpdate", "php artisan optimize" ] }, "config": { "preferred-install": "dist" } }
包名稱的版本
確切的版本號--------1.0.2---------你可以指定包的確切版本。 范圍-------->=1.0 >=1.0,<2.0 >=1.0,<1.1|>=1.2--------通過使用比較操作符可以指定有效的版本范圍。 有效的運算符:>、>=、<、<=、!=。你可以定義多個范圍,用逗號隔開,這將被視為一個邏輯AND處理。一個管道符號|將作為邏輯OR處理。 AND 的優(yōu)先級高于 OR。 通配符--------1.0.*--------你可以使用通配符*來指定一種模式。1.0.*與>=1.0,<1.1是等效的。 賦值運算符--------~1.2--------這對于遵循語義化版本號的項目非常有用。~1.2相當于>=1.2,<2.0。
基本用法我們需要重點關(guān)注通配符和波浪符,通配符很好理解,波浪符有點拗口,~ 最好用例子來解釋: ~1.2 相當于 >=1.2,<2.0(標記你所依賴的最低版本),而 ~1.2.3 相當于 >=1.2.3,<1.3。(指定最低版本,但允許版本號的最后一位數(shù)字上升。)語義化很難懂,但是直接看例子是可以知道怎么用的
composer是通過讀取composer.json和composer.lock文件來進行安裝包的
在安裝依賴后,Composer 將把安裝時確切的版本號列表寫入 composer.lock 文件。這將鎖定改項目的特定版本。因為 install 命令將會檢查鎖文件是否存在,如果存在,它將下載指定的版本(忽略 composer.json 文件中的定義)。如果不存在 composer.lock 文件,Composer 將讀取 composer.json 并創(chuàng)建鎖文件。
一般的使用用法有:
composer install (install 命令從當前目錄讀取 composer.json 文件,處理了依賴關(guān)系,并把其安裝到 vendor 目錄下。)
composer install XXXX (這是多帶帶安裝某些包的時候使用)
composer update (為了獲取依賴的最新版本,并且升級 composer.lock 文件,)
composer update XXX (類似)
--prefer-source: 下載包的方式有兩種: source 和 dist。對于穩(wěn)定版本 composer 將默認使用 dist 方式。而 source 表示版本控制源 。如果 --prefer-source 是被啟用的,composer 將從 source 安裝(如果有的話)。如果想要使用一個 bugfix 到你的項目,這是非常有用的。并且可以直接從本地的版本庫直接獲取依賴關(guān)系。 --prefer-dist: 與 --prefer-source 相反,composer 將盡可能的從 dist 獲取,這將大幅度的加快在 build servers 上的安裝。這也是一個回避 git 問題的途徑,如果你不清楚如何正確的設(shè)置。 --dry-run: 如果你只是想演示而并非實際安裝一個包,你可以運行 --dry-run 命令,它將模擬安裝并顯示將會發(fā)生什么。 --dev: 安裝 require-dev 字段中列出的包(這是一個默認值)。 --no-dev: 跳過 require-dev 字段中列出的包。 --no-scripts: 跳過 composer.json 文件中定義的腳本。 --no-plugins: 關(guān)閉 plugins。 --no-progress: 移除進度信息,這可以避免一些不處理換行的終端或腳本出現(xiàn)混亂的顯示。 --optimize-autoloader (-o): 轉(zhuǎn)換 PSR-0/4 autoloading 到 classmap 可以獲得更快的加載支持。特別是在生產(chǎn)環(huán)境下建議這么做,但由于運行需要一些時間,因此并沒有作為默認值。
composer require(require 命令增加新的依賴包到當前目錄的 composer.json 文件中。但并不即可更新)
composer dump-autoload(某些情況下你需要更新 autoloader,例如在你的包中加入了一個新的類。)
自動加載composer的自動加載會生產(chǎn)這個文件vendor/autoload.php,然后調(diào)用這個文件就能夠獲得文件里面的類的自動加載
自動加載只支持 PSR-4和 PSR-0兩種命名方式
Under the psr-4 key you define a mapping from namespaces to paths, relative to the package root. { "autoload": { "psr-4": { "Monolog": "src/", //這里寫法其實差不多,但是展現(xiàn)的意義并不相同,psr4會設(shè)定一個命名空間作為包的根目錄,舉例這行的意思是src/目錄映射成為Monolog根目錄,那么調(diào)用這個包的時候?qū)慚onologBarBaz,其實自動加載就會去這里src/Bar/Baz.php找類文件,然后加載 "VendorNamespace": "" } } } 在 psr-0 key 下你定義了一個命名空間到實際路徑的映射(相對于包的根目錄) { "autoload": { "psr-0": { "Monolog": "src/", //這里的意思是src/目錄映射為Monolog,如果要調(diào)用MonologBarBaz,那么自動加載就會去src/Monolog/Bar/Baz.php,然后加載 "VendorNamespace": "src/", "Vendor_Namespace_": "src/" } } }
laravel的自動加載會多了一些東西
vendor/autoload.php引用參考:
http://docs.phpcomposer.com/00-intro.html
https://getcomposer.org/doc/00-intro.md
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/22498.html
摘要:因為箭頭函數(shù)本身沒有所以不可以當作構(gòu)造函數(shù),也就是說,不可以使用命令,否則會拋出一個錯誤。箭頭函數(shù)不可以使用對象,該對象在函數(shù)體內(nèi)不存在。 es6學(xué)習(xí)筆記-箭頭函數(shù)_v1.0 箭頭函數(shù)使用方法 var f = v => v; //普通函數(shù)配合箭頭函數(shù)寫法,這里并且是傳參的 //相當于 var f = function(v) { return v; }; /*-----------...
摘要:考慮到環(huán)境導(dǎo)致的行為差異太大,應(yīng)該避免在塊級作用域內(nèi)聲明函數(shù)。函數(shù)聲明語句函數(shù)表達式循環(huán)循環(huán)還有一個特別之處,就是循環(huán)語句部分是一個父作用域,而循環(huán)體內(nèi)部是一個單獨的子作用域。聲明一個只讀的常量。 es6學(xué)習(xí)筆記-let,const和塊級作用域_v1.0 塊級作用域 javascript 原來是沒有塊級作用域的,只有全局作用域和函數(shù)作用域 例子1 因為沒有塊級作用域,所以每次的i都是一...
摘要:關(guān)于的包的使用筆記關(guān)于安裝官網(wǎng)已經(jīng)很詳細了不再描述關(guān)于導(dǎo)入導(dǎo)入的話只有幾個小地方需要注意導(dǎo)入的時候會有產(chǎn)生一些的在循環(huán)遍歷導(dǎo)入的數(shù)據(jù)的時候主動忽略關(guān)于中文或者亂碼問題或者在配置文件在安裝這個模塊的文檔有介紹怎么生成這個文件 關(guān)于laravel5的excel包maatwebsite/excel的使用筆記 關(guān)于安裝 官網(wǎng)已經(jīng)很詳細了,不再描述.http://www.maatwebsite....
摘要:學(xué)習(xí)筆記數(shù)值的擴展有一些不常用或者還不支持的就沒有記錄了總體來說本篇只是一個備忘而已用來檢查一個數(shù)值是否為有限的。兩個新方法只對數(shù)值有效,非數(shù)值一律返回。參考引用數(shù)值擴展 es6學(xué)習(xí)筆記-數(shù)值的擴展 有一些不常用或者還不支持的就沒有記錄了,總體來說本篇只是一個備忘而已 Number.isFinite(), Number.isNaN() Number.isFinite()用來檢查一個數(shù)值...
摘要:學(xué)習(xí)筆記頂層對象雖然是筆記但是基本是抄了一次大師的文章了頂層對象頂層對象,在瀏覽器環(huán)境指的是對象,在指的是對象。之中,頂層對象的屬性與全局變量是等價的。的寫法模塊的寫法上面代碼將頂層對象放入變量。參考引用頂層對象實戰(zhàn) es6學(xué)習(xí)筆記-頂層對象_v1.0 (雖然是筆記,但是基本是抄了一次ruan大師的文章了) 頂層對象 頂層對象,在瀏覽器環(huán)境指的是window對象,在Node指的是gl...
閱讀 3021·2021-11-16 11:42
閱讀 3674·2021-09-08 09:36
閱讀 955·2019-08-30 12:52
閱讀 2489·2019-08-29 14:12
閱讀 779·2019-08-29 13:53
閱讀 3592·2019-08-29 12:16
閱讀 648·2019-08-29 12:12
閱讀 2477·2019-08-29 11:16