Composer 中文文檔

本文檔根據(jù)Composer中國官方文檔經(jīng)過整理編排而成,相對官方文檔更符合常規(guī)的思維和操作習(xí)慣滓窍,方便上手碍庵,內(nèi)容比較全,但如需更詳細的內(nèi)容割按,請查看官方文檔

簡介

Composer 是 PHP 的一個依賴管理工具膨报。它允許你申明項目所依賴的代碼庫,它會在你的項目中為你安裝他們适荣。

安裝 - Windows

使用安裝程序

這是將 Composer 安裝在你機器上的最簡單的方法现柠。

下載并且運行 Composer-Setup.exe,它將安裝最新版本的 Composer 束凑,并設(shè)置好系統(tǒng)的環(huán)境變量晒旅,因此你可以在任何目錄下直接使用 composer 命令。

安裝 - *nix

下載 Composer 的可執(zhí)行文件

局部安裝

要真正獲取 Composer汪诉,我們需要做兩件事废恋。首先安裝 Composer (同樣的,這意味著它將下載到你的項目中):

curl -sS https://getcomposer.org/installer | php

你可以通過 --install-dir 選項指定 Composer 的安裝目錄(它可以是一個絕對或相對路徑):

curl -sS https://getcomposer.org/installer | php -- --install-dir=bin

全局安裝

你可以將此文件放在任何地方扒寄。如果你把它放在系統(tǒng)的 PATH 目錄中鱼鼓,你就能在全局訪問它。 在類Unix系統(tǒng)中该编,你甚至可以在使用時不加 php 前綴迄本。

你可以執(zhí)行這些命令讓 composer 在你的系統(tǒng)中進行全局調(diào)用:

curl -sS https://getcomposer.org/installer | php
mv composer.phar /usr/local/bin/composer

配置 Packagist 鏡像

修改 composer 的全局配置文件(推薦方式)

打開命令行窗口(windows用戶)或控制臺(Linux、Mac 用戶)并執(zhí)行如下命令:

因為Composer中國鏡像比較慢课竣,這里推薦使用阿里云鏡像

composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/

使用 Composer

如果你進行了全局安裝嘉赎,并且沒有 phar 文件在當(dāng)前目錄,請使用下面的命令代替:

要檢查 Composer 是否正常工作于樟,只需要在命令行輸入:

composer

這將返回給你一個可執(zhí)行的命令列表公条。

初始化項目 init

“庫” 那一章我們看到了如何手動創(chuàng)建 composer.json 文件。實際上還有一個 init 命令可以更容易的做到這一點迂曲。

當(dāng)您運行該命令靶橱,它會以交互方式要求您填寫一些信息,同時聰明的使用一些默認(rèn)值路捧。

composer init

初始化-參數(shù)

  • --name: 包的名稱关霸。
  • --description: 包的描述。
  • --author: 包的作者杰扫。
  • --homepage: 包的主頁队寇。
  • --require: 需要依賴的其它包,必須要有一個版本約束章姓。并且應(yīng)該遵循 foo/bar:1.0.0 這樣的格式佳遣。
  • --require-dev: 開發(fā)版的依賴包炭序,內(nèi)容格式與 --require 相同。
  • --stability (-s): minimum-stability 字段的值苍日。

申明依賴 require

require 命令增加新的依賴包到當(dāng)前目錄的 composer.json 文件中惭聂。

composer require

在添加或改變依賴時, 修改后的依賴關(guān)系將被安裝或者更新相恃。

如果你不希望通過交互來指定依賴包辜纲,你可以在這條令中直接指明依賴包拦耐。

composer require vendor/package:2.* vendor/package2:dev-master

申明依賴-參數(shù)

  • --prefer-source: 當(dāng)有可用的包時扫俺,從 source 安裝。
  • --prefer-dist: 當(dāng)有可用的包時太示,從 dist 安裝柠贤。
  • --dev: 安裝 require-dev 字段中列出的包。
  • --no-update: 禁用依賴關(guān)系的自動更新类缤。
  • --no-progress: 移除進度信息臼勉,這可以避免一些不處理換行的終端或腳本出現(xiàn)混亂的顯示。
  • --update-with-dependencies 一并更新新裝包的依賴呀非。

全局執(zhí)行 global

global 命令允許你在 COMPOSER_HOME 目錄下執(zhí)行其它命令坚俗,像 install镜盯、requireupdate岸裙。

并且如果你將 $COMPOSER_HOME/vendor/bin 加入到了 $PATH 環(huán)境變量中,你就可以用它在命令行中安裝全局應(yīng)用速缆,下面是一個例子:

composer global require fabpot/php-cs-fixer:dev-master

現(xiàn)在 php-cs-fixer 就可以在全局范圍使用了(假設(shè)你已經(jīng)設(shè)置了你的 PATH)降允。如果稍后你想更新它,你只需要運行 global update

composer global update

安裝 install

install 命令從當(dāng)前目錄讀取 composer.json 文件艺糜,處理了依賴關(guān)系剧董,并把其安裝到 vendor 目錄下幢尚。

composer install

如果當(dāng)前目錄下存在 composer.lock 文件,它會從此文件讀取依賴版本翅楼,而不是根據(jù) composer.json 文件去獲取依賴尉剩。這確保了該庫的每個使用者都能得到相同的依賴版本。

如果沒有 composer.lock 文件毅臊,composer 將在處理完依賴關(guān)系后創(chuàng)建它理茎。

安裝-參數(shù)

  • --prefer-source: 下載包的方式有兩種: sourcedist。對于穩(wěn)定版本 composer 將默認(rèn)使用 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 字段中列出的包(這是一個默認(rèn)值)沼沈。
  • --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)境下建議這么做摊滔,但由于運行需要一些時間,因此并沒有作為默認(rèn)值店乐。

更新 update

為了獲取依賴的最新版本艰躺,并且升級 composer.lock 文件,你應(yīng)該使用 update 命令眨八。

composer update

這將解決項目的所有依賴腺兴,并將確切的版本號寫入 composer.lock

如果你只是想更新幾個包廉侧,你可以像這樣分別列出它們:

composer update vendor/package vendor/package2

你還可以使用通配符進行批量更新:

composer update vendor/*

更新-參數(shù)

  • --prefer-source: 當(dāng)有可用的包時页响,從 source 安裝篓足。
  • --prefer-dist: 當(dāng)有可用的包時,從 dist 安裝闰蚕。
  • --dry-run: 模擬命令栈拖,并沒有做實際的操作。
  • --dev: 安裝 require-dev 字段中列出的包(這是一個默認(rèn)值)没陡。
  • --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)境下建議這么做锻弓,但由于運行需要一些時間,因此并沒有作為默認(rèn)值蝌箍。
  • --lock: 僅更新 lock 文件的 hash青灼,取消有關(guān) lock 文件過時的警告。
  • --with-dependencies 同時更新白名單內(nèi)包的依賴關(guān)系妓盲,這將進行遞歸更新杂拨。

搜索 search

search 命令允許你為當(dāng)前項目搜索依賴包,通常它只搜索 packagist.org 上的包悯衬,你可以簡單的輸入你的搜索條件弹沽。

composer search monolog

您也可以通過傳遞多個參數(shù)來進行多條件搜索。

搜索-參數(shù)

  • --only-name (-N): 僅針對指定的名稱搜索(完全匹配)筋粗。

展示 show

列出所有可用的軟件包策橘,你可以使用 show 命令。

composer show

如果你想看到一個包的詳細信息娜亿,你可以輸入一個包名稱丽已。

composer show monolog/monolog

name     : monolog/monolog
versions : master-dev, 1.0.2, 1.0.1, 1.0.0, 1.0.0-RC1
type     : library
names    : monolog/monolog
source   : [git] http://github.com/Seldaek/monolog.git 3d4e60d0cbc4b888fe5ad223d77964428b1978da
dist     : [zip] http://github.com/Seldaek/monolog/zipball/3d4e60d0cbc4b888fe5ad223d77964428b1978da 3d4e60d0cbc4b888fe5ad223d77964428b1978da
license  : MIT

autoload
psr-0
Monolog : src/

requires
php >=5.3.0

你甚至可以輸入一個軟件包的版本號,來顯示該版本的詳細信息买决。

composer show monolog/monolog 1.0.2

包名稱

包名稱由供應(yīng)商名稱和其項目名稱構(gòu)成沛婴。通常容易產(chǎn)生相同的項目名稱,而供應(yīng)商名稱的存在則很好的解決了命名沖突的問題督赤。它允許兩個不同的人創(chuàng)建同樣名為 json 的庫嘁灯,而之后它們將被命名為 igorw/jsonseldaek/json

這里我們需要引入 monolog/monolog够挂,供應(yīng)商名稱與項目的名稱相同旁仿,對于一個具有唯一名稱的項目藕夫,我們推薦這么做孽糖。它還允許以后在同一個命名空間添加更多的相關(guān)項目枯冈。如果你維護著一個庫,這將使你可以很容易的把它分離成更小的部分办悟。

包版本

在前面的例子中尘奏,我們引入的 monolog 版本指定為 1.0.*。這表示任何從 1.0 開始的開發(fā)分支病蛉,它將會匹配 1.0.0炫加、1.0.2 或者 1.0.20

版本約束可以用幾個不同的方法來指定铺然。

名稱 實例 描述
確切的版本號 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相當(dāng)于>=1.2,<2.0漏健。想要了解更多,請閱讀下一小節(jié)橘霎。

下一個重要版本(波浪號運算符)

~ 最好用例子來解釋: ~1.2 相當(dāng)于 >=1.2,<2.0蔫浆,而 ~1.2.3 相當(dāng)于 >=1.2.3,<1.3。正如你所看到的這對于遵循 語義化版本號 的項目最有用姐叁。一個常見的用法是標(biāo)記你所依賴的最低版本瓦盛,像 ~1.2 (允許1.2以上的任何版本,但不包括2.0)外潜。由于理論上直到2.0應(yīng)該都沒有向后兼容性問題原环,所以效果很好。你還會看到它的另一種用法处窥,使用 ~ 指定最低版本嘱吗,但允許版本號的最后一位數(shù)字上升。

注意: 雖然 2.0-beta.1 嚴(yán)格地說是早于 2.0,但是谒麦,根據(jù)版本約束條件俄讹, 例如 ~1.2 卻不會安裝這個版本。就像前面所講的 ~1.2 只意味著 .2 部分可以改變绕德,但是 1. 部分是固定的患膛。

穩(wěn)定性

默認(rèn)情況下只有穩(wěn)定的發(fā)行版才會被考慮在內(nèi)。如果你也想獲得 RC耻蛇、beta踪蹬、alpha 或 dev 版本,你可以使用 穩(wěn)定標(biāo)志臣咖。你可以對所有的包做 最小穩(wěn)定性 設(shè)置跃捣,而不是每個依賴逐一設(shè)置。

安裝依賴包

獲取定義的依賴到你的本地項目夺蛇,只需要調(diào)用 composer 運行 install 命令枝缔。

composer install

接著前面的例子,這將會找到 monolog/monolog 的最新版本蚊惯,并將它下載到 vendor 目錄愿卸。 這是一個慣例把第三方的代碼到一個指定的目錄 vendor。如果是 monolog 將會創(chuàng)建 vendor/monolog/monolog 目錄截型。

小技巧: 如果你正在使用Git來管理你的項目趴荸, 你可能要添加 vendor 到你的 .gitignore 文件中。 你不會希望將所有的代碼都添加到你的版本庫中宦焦。

另一件事是 install 命令將創(chuàng)建一個 composer.lock 文件到你項目的根目錄中发钝。

composer.lock - 鎖文件

在安裝依賴后,Composer 將把安裝時確切的版本號列表寫入 composer.lock 文件波闹。這將鎖定改項目的特定版本酝豪。

請?zhí)峤荒銘?yīng)用程序的 composer.lock (包括 composer.json)到你的版本庫中

這是非常重要的,因為 install 命令將會檢查鎖文件是否存在精堕,如果存在孵淘,它將下載指定的版本(忽略 composer.json 文件中的定義)。

這意味著歹篓,任何人建立項目都將下載與指定版本完全相同的依賴瘫证。你的持續(xù)集成服務(wù)器、生產(chǎn)環(huán)境庄撮、你團隊中的其他開發(fā)人員背捌、每件事、每個人都使用相同的依賴洞斯,從而減輕潛在的錯誤對部署的影響毡庆。即使你獨自開發(fā)項目,在六個月內(nèi)重新安裝項目時,你也可以放心的繼續(xù)工作么抗,即使從那時起你的依賴已經(jīng)發(fā)布了許多新的版本毅否。

如果不存在 composer.lock 文件,Composer 將讀取 composer.json 并創(chuàng)建鎖文件乖坠。

這意味著如果你的依賴更新了新的版本搀突,你將不會獲得任何更新刀闷。此時要更新你的依賴版本請使用 update 命令熊泵。這將獲取最新匹配的版本(根據(jù)你的 composer.json 文件)并將新版本更新進鎖文件。

php composer.phar update

如果只想安裝或更新一個依賴甸昏,你可以白名單它們:

php composer.phar update monolog/monolog [...]

注意: 對于庫顽分,并不一定建議提交鎖文件 請參考:庫的鎖文件.

自動加載

對于庫的自動加載信息,Composer 生成了一個 vendor/autoload.php 文件注祖。你可以簡單的引入這個文件赦邻,你會得到一個免費的自動加載支持填抬。

require 'vendor/autoload.php';

這使得你可以很容易的使用第三方代碼。例如:如果你的項目依賴 monolog缸沃,你就可以像這樣開始使用這個類庫,并且他們將被自動加載修械。

$log = new Monolog\Logger('name');
$log->pushHandler(new Monolog\Handler\StreamHandler('app.log', Monolog\Logger::WARNING));

$log->addWarning('Foo');

你可以在 composer.jsonautoload 字段中增加自己的 autoloader趾牧。

{
    "autoload": {
        "psr-4": {"Acme\\": "src/"}
    }
}

Composer 將注冊一個 PSR-4 autoloader 到 Acme 命名空間。

你可以定義一個從命名空間到目錄的映射肯污。此時 src 會在你項目的根目錄翘单,與 vendor 文件夾同級。例如 src/Foo.php 文件應(yīng)該包含 Acme\Foo 類蹦渣。

添加 autoload 字段后哄芜,你應(yīng)該再次運行 install 命令來生成 vendor/autoload.php 文件。

引用這個文件也將返回 autoloader 的實例柬唯,你可以將包含調(diào)用的返回值存儲在變量中认臊,并添加更多的命名空間。這對于在一個測試套件中自動加載類文件是非常有用的锄奢,例如美尸。

$loader = require 'vendor/autoload.php';
$loader->add('Acme\\Test\\', __DIR__);

除了 PSR-4 自動加載,classmap 也是支持的斟薇。這允許類被自動加載师坎,即使不符合 PSR-0 規(guī)范。詳細請查看 自動加載-參考堪滨。

注意: Composer 提供了自己的 autoloader胯陋。如果你不想使用它,你可以僅僅引入 vendor/composer/autoload_*.php 文件,它返回一個關(guān)聯(lián)數(shù)組遏乔,你可以通過這個關(guān)聯(lián)數(shù)組配置自己的 autoloader义矛。

庫(資源包)

本章將告訴你如何通過 Composer 來安裝你的庫。


每一個項目都是一個包

<u>只要你有一個 composer.json 文件在目錄中盟萨,那么整個目錄就是一個包凉翻。</u>當(dāng)你添加一個 require 到項目中,你就是在創(chuàng)建一個依賴于其它庫的包捻激。你的項目和庫之間唯一的區(qū)別是制轰,你的項目是一個沒有名字的包。

為了使它成為一個可安裝的包胞谭,你需要給它一個名稱垃杖。你可以通過 composer.json 中的 name 來定義:

{
    "name": "acme/hello-world",
    "require": {
        "monolog/monolog": "1.0.*"
    }
}

在這種情況下項目的名稱為 acme/hello-world,其中 acme 是供應(yīng)商的名稱丈屹。供應(yīng)商的名稱是必須填寫的调俘。

注意: 如果你不知道拿什么作為供應(yīng)商的名稱, 那么使用你 github 上的用戶名通常是不錯的選擇旺垒。 雖然包名不區(qū)分大小寫彩库,但慣例是使用小寫字母,并用連字符作為單詞的分隔先蒋。

平臺軟件包

Composer 將那些已經(jīng)安裝在系統(tǒng)上骇钦,但并不是由 Composer 安裝的包視為一個虛擬的平臺軟件包。這包括PHP本身鞭达,PHP擴展和一些系統(tǒng)庫司忱。

  • php 表示用戶的 PHP 版本要求,你可以對其做出限制畴蹭。例如 >=5.4.0坦仍。如果需要64位版本的 PHP,你可以使用 php-64bit 進行限制叨襟。
  • hhvm 代表的是 HHVM(也就是 HipHop Virtual Machine) 運行環(huán)境的版本繁扎,并且允許你設(shè)置一個版本限制,例如糊闽,'>=2.3.3'梳玫。
  • ext-<name> 可以幫你指定需要的 PHP 擴展(包括核心擴展)。通常 PHP 拓展的版本可以是不一致的右犹,將它們的版本約束為 * 是一個不錯的主意提澎。一個 PHP 擴展包的例子:包名可以寫成 ext-gd
  • lib-<name> 允許對 PHP 庫的版本進行限制念链。
    以下是可供使用的名稱:curl盼忌、iconv积糯、iculibxml谦纱、openssl看成、pcreuuid跨嘉、xsl川慌。

你可以使用 composer show --platform 命令來獲取可用的平臺軟件包的列表。

指明版本

你需要一些方法來指明自己開發(fā)的包的版本祠乃,當(dāng)你在 Packagist 上發(fā)布自己的包梦重,它能夠從 VCS (git, svn, hg) 的信息推斷出包的版本,因此你不必手動指明版本號跳纳,并且也不建議這樣做忍饰。請查看 標(biāo)簽分支 來了解版本號是如何被提取的贪嫂。

如果你想要手動創(chuàng)建并且真的要明確指定它寺庄,你只需要添加一個 version 字段:

{
    "version": "1.0.0"
}

注意: 你應(yīng)該盡量避免手動設(shè)置版本號,因為標(biāo)簽的值必須與標(biāo)簽名相匹配力崇。

標(biāo)簽

對于每一個看起來像版本號的標(biāo)簽斗塘,都會相應(yīng)的創(chuàng)建一個包的版本。它應(yīng)該符合 'X.Y.Z' 或者 'vX.Y.Z' 的形式亮靴,-patch馍盟、-alpha-beta-RC 這些后綴是可選的茧吊。在后綴之后也可以再跟上一個數(shù)字贞岭。

下面是有效的標(biāo)簽名稱的幾個例子:

  • 1.0.0
  • v1.0.0
  • 1.10.5-RC1
  • v4.4.4beta2
  • v2.0.0-alpha
  • v2.0.4-p1

注意: 即使你的標(biāo)簽帶有前綴 v, 由于在需要 require 一個版本的約束時是不允許這種前綴的搓侄, 因此 v 將被省略(例如標(biāo)簽 V1.0.0 將創(chuàng)建 1.0.0 版本)瞄桨。

Packagist 鏡像使用方法

鏡像用法

有兩種方式啟用本鏡像服務(wù):

  • 系統(tǒng)全局配置: 即將配置信息添加到 Composer 的全局配置文件 config.json 中。見“方法一”
  • 單個項目配置: 將配置信息添加到某個項目的 composer.json 文件中讶踪。見“方法二”

方法一: 修改 composer 的全局配置文件(推薦方式)

打開命令行窗口(windows用戶)或控制臺(Linux芯侥、Mac 用戶)并執(zhí)行如下命令:

復(fù)制

composer config -g repo.packagist composer https://packagist.phpcomposer.com

方法二: 修改當(dāng)前項目的 composer.json 配置文件:

打開命令行窗口(windows用戶)或控制臺(Linux、Mac 用戶)乳讥,進入你的項目的根目錄(也就是 composer.json 文件所在目錄)柱查,執(zhí)行如下命令:

復(fù)制

composer config repo.packagist composer https://packagist.phpcomposer.com

上述命令將會在當(dāng)前項目中的 composer.json 文件的末尾自動添加鏡像的配置信息(你也可以自己手工添加):

復(fù)制

"repositories": {
    "packagist": {
        "type": "composer",
        "url": "https://packagist.phpcomposer.com"
    }
}

以 laravel 項目的 composer.json 配置文件為例,執(zhí)行上述命令后如下所示(注意最后幾行):

復(fù)制

{
    "name": "laravel/laravel",
    "description": "The Laravel Framework.",
    "keywords": ["framework", "laravel"],
    "license": "MIT",
    "type": "project",
    "require": {
        "php": ">=5.5.9",
        "laravel/framework": "5.2.*"
    },
    "config": {
        "preferred-install": "dist"
    },
    "repositories": {
        "packagist": {
            "type": "composer",
            "url": "https://packagist.phpcomposer.com"
        }
    }
}

OK云石,一切搞定唉工!試一下 composer install 來體驗飛一般的速度吧!

鏡像原理:

一般情況下汹忠,安裝包的數(shù)據(jù)(主要是 zip 文件)一般是從 github.com 上下載的淋硝,安裝包的元數(shù)據(jù)是從 packagist.org 上下載的告嘲。

然而,由于眾所周知的原因奖地,國外的網(wǎng)站連接速度很慢橄唬,并且隨時可能被“墻”甚至“不存在”。

“Packagist 中國全量鏡像”所做的就是緩存所有安裝包和元數(shù)據(jù)到國內(nèi)的機房并通過國內(nèi)的 CDN 進行加速参歹,這樣就不必再去向國外的網(wǎng)站發(fā)起請求仰楚,從而達到加速 composer install以及 composer update 的過程,并且更加快速犬庇、穩(wěn)定僧界。因此,即使 packagist.org臭挽、github.com 發(fā)生故障(主要是連接速度太慢和被墻)捂襟,你仍然可以下載、更新安裝包欢峰。

解除鏡象:

如果需要解除鏡像并恢復(fù)到 packagist 官方源葬荷,請執(zhí)行以下命令:

復(fù)制

composer config -g --unset repos.packagist

執(zhí)行之后,composer 會利用默認(rèn)值(也就是官方源)重置源地址纽帖。

將來如果還需要使用鏡像的話宠漩,只需要根據(jù)前面的“鏡像用法”中介紹的方法再次設(shè)置鏡像地址即可。

命令行

你已經(jīng)學(xué)會了如何使用命令行界面做一些事情懊直。本章將向你介紹所有可用的命令扒吁。

為了從命令行獲得幫助信息,請運行 composer 或者 composer list 命令室囊,然后結(jié)合 --help 命令來獲得更多的幫助信息雕崩。



全局參數(shù)

下列參數(shù)可與每一個命令結(jié)合使用:

  • --verbose (-v):

    增加反饋信息的詳細度。

    • -v 表示正常輸出融撞。
    • -vv 表示更詳細的輸出盼铁。
    • -vvv 則是為了 debug。
  • --help (-h): 顯示幫助信息懦铺。

  • --quiet (-q): 禁止輸出任何信息捉貌。

  • --no-interaction (-n): 不要詢問任何交互問題。

  • --working-dir (-d): 如果指定的話冬念,使用給定的目錄作為工作目錄趁窃。

  • --profile: 顯示時間和內(nèi)存使用信息。

  • --ansi: 強制 ANSI 輸出急前。

  • --no-ansi: 關(guān)閉 ANSI 輸出醒陆。

  • --version (-V): 顯示當(dāng)前應(yīng)用程序的版本信息。

進程退出代碼

  • 0: 正常
  • 1: 通用/未知錯誤
  • 2: 依賴關(guān)系處理錯誤

初始化 init

“庫” 那一章我們看到了如何手動創(chuàng)建 composer.json 文件裆针。實際上還有一個 init 命令可以更容易的做到這一點刨摩。

當(dāng)您運行該命令寺晌,它會以交互方式要求您填寫一些信息,同時聰明的使用一些默認(rèn)值澡刹。

composer init

初始化-參數(shù)

  • --name: 包的名稱呻征。
  • --description: 包的描述。
  • --author: 包的作者罢浇。
  • --homepage: 包的主頁陆赋。
  • --require: 需要依賴的其它包,必須要有一個版本約束嚷闭。并且應(yīng)該遵循 foo/bar:1.0.0 這樣的格式攒岛。
  • --require-dev: 開發(fā)版的依賴包,內(nèi)容格式與 --require 相同胞锰。
  • --stability (-s): minimum-stability 字段的值灾锯。

申明依賴 require

require 命令增加新的依賴包到當(dāng)前目錄的 composer.json 文件中。

composer require

在添加或改變依賴時嗅榕, 修改后的依賴關(guān)系將被安裝或者更新顺饮。

如果你不希望通過交互來指定依賴包,你可以在這條令中直接指明依賴包誊册。

composer require vendor/package:2.* vendor/package2:dev-master

申明依賴-參數(shù)

  • --prefer-source: 當(dāng)有可用的包時领突,從 source 安裝暖璧。
  • --prefer-dist: 當(dāng)有可用的包時案怯,從 dist 安裝。
  • --dev: 安裝 require-dev 字段中列出的包澎办。
  • --no-update: 禁用依賴關(guān)系的自動更新嘲碱。
  • --no-progress: 移除進度信息,這可以避免一些不處理換行的終端或腳本出現(xiàn)混亂的顯示局蚀。
  • --update-with-dependencies 一并更新新裝包的依賴麦锯。

全局執(zhí)行 global

global 命令允許你在 COMPOSER_HOME 目錄下執(zhí)行其它命令,像 install琅绅、requireupdate扶欣。

并且如果你將 $COMPOSER_HOME/vendor/bin 加入到了 $PATH 環(huán)境變量中,你就可以用它在命令行中安裝全局應(yīng)用千扶,下面是一個例子:

composer global require fabpot/php-cs-fixer:dev-master

現(xiàn)在 php-cs-fixer 就可以在全局范圍使用了(假設(shè)你已經(jīng)設(shè)置了你的 PATH)料祠。如果稍后你想更新它,你只需要運行 global update

composer global update

安裝 install

install 命令從當(dāng)前目錄讀取 composer.json 文件澎羞,處理了依賴關(guān)系髓绽,并把其安裝到 vendor 目錄下。

composer install

如果當(dāng)前目錄下存在 composer.lock 文件妆绞,它會從此文件讀取依賴版本顺呕,而不是根據(jù) composer.json 文件去獲取依賴枫攀。這確保了該庫的每個使用者都能得到相同的依賴版本。

如果沒有 composer.lock 文件株茶,composer 將在處理完依賴關(guān)系后創(chuàng)建它来涨。

安裝-參數(shù)

  • --prefer-source: 下載包的方式有兩種: sourcedist。對于穩(wěn)定版本 composer 將默認(rèn)使用 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 字段中列出的包(這是一個默認(rèn)值)航攒。
  • --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)境下建議這么做蝴悉,但由于運行需要一些時間,因此并沒有作為默認(rèn)值瘾敢。

更新 update

為了獲取依賴的最新版本拍冠,并且升級 composer.lock 文件,你應(yīng)該使用 update 命令簇抵。

composer update

這將解決項目的所有依賴庆杜,并將確切的版本號寫入 composer.lock

如果你只是想更新幾個包正压,你可以像這樣分別列出它們:

composer update vendor/package vendor/package2

你還可以使用通配符進行批量更新:

composer update vendor/*

更新-參數(shù)

  • --prefer-source: 當(dāng)有可用的包時欣福,從 source 安裝。
  • --prefer-dist: 當(dāng)有可用的包時焦履,從 dist 安裝拓劝。
  • --dry-run: 模擬命令雏逾,并沒有做實際的操作。
  • --dev: 安裝 require-dev 字段中列出的包(這是一個默認(rèn)值)郑临。
  • --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)境下建議這么做丧叽,但由于運行需要一些時間,因此并沒有作為默認(rèn)值公你。
  • --lock: 僅更新 lock 文件的 hash踊淳,取消有關(guān) lock 文件過時的警告。
  • --with-dependencies 同時更新白名單內(nèi)包的依賴關(guān)系陕靠,這將進行遞歸更新迂尝。

搜索 search

search 命令允許你為當(dāng)前項目搜索依賴包,通常它只搜索 packagist.org 上的包剪芥,你可以簡單的輸入你的搜索條件垄开。

composer search monolog

您也可以通過傳遞多個參數(shù)來進行多條件搜索。

搜索-參數(shù)

  • --only-name (-N): 僅針對指定的名稱搜索(完全匹配)税肪。

展示 show

列出所有可用的軟件包溉躲,你可以使用 show 命令。

composer show

如果你想看到一個包的詳細信息寸认,你可以輸入一個包名稱签财。

composer show monolog/monolog

name     : monolog/monolog
versions : master-dev, 1.0.2, 1.0.1, 1.0.0, 1.0.0-RC1
type     : library
names    : monolog/monolog
source   : [git] http://github.com/Seldaek/monolog.git 3d4e60d0cbc4b888fe5ad223d77964428b1978da
dist     : [zip] http://github.com/Seldaek/monolog/zipball/3d4e60d0cbc4b888fe5ad223d77964428b1978da 3d4e60d0cbc4b888fe5ad223d77964428b1978da
license  : MIT

autoload
psr-0
Monolog : src/

requires
php >=5.3.0

你甚至可以輸入一個軟件包的版本號,來顯示該版本的詳細信息偏塞。

composer show monolog/monolog 1.0.2

展示-參數(shù)

  • --installed (-i): 列出已安裝的依賴包。
  • --platform (-p): 僅列出平臺軟件包(PHP 與它的擴展)邦鲫。
  • --self (-s): 僅列出當(dāng)前項目信息灸叼。

依賴性檢測 depends

depends 命令可以查出已安裝在你項目中的某個包,是否正在被其它的包所依賴庆捺,并列出他們古今。

composer depends --link-type=require monolog/monolog

nrk/monolog-fluent
poc/poc
propel/propel
symfony/monolog-bridge
symfony/symfony

依賴性檢測-參數(shù)

  • --link-type: 檢測的類型,默認(rèn)為 require 也可以是 require-dev滔以。

有效性檢測 validate

在提交 composer.json 文件捉腥,和創(chuàng)建 tag 前,你應(yīng)該始終運行 validate 命令你画。它將檢測你的 composer.json文件是否是有效的

composer validate

有效性檢測參數(shù)

  • --no-check-all: Composer 是否進行完整的校驗抵碟。

依賴包狀態(tài)檢測 status

如果你經(jīng)常修改依賴包里的代碼桃漾,并且它們是從 source(自定義源)進行安裝的,那么 status 命令允許你進行檢查拟逮,如果你有任何本地的更改它將會給予提示撬统。

composer status

你可以使用 --verbose 系列參數(shù)(-v|vv|vvv)來獲取更詳細的詳細:

composer status -v

You have changes in the following dependencies:
vendor/seld/jsonlint:
    M README.mdown

自我更新 self-update

將 Composer 自身升級到最新版本,只需要運行 self-update 命令敦迄。它將替換你的 composer.phar 文件到最新版本恋追。

composer self-update

如果你想要升級到一個特定的版本,可以這樣簡單的指定它:

composer self-update 1.0.0-alpha7

如果你已經(jīng)為整個系統(tǒng)安裝 Composer(參見 全局安裝)罚屋,你可能需要在 root 權(quán)限下運行它:

sudo composer self-update

自我更新-參數(shù)

  • --rollback (-r): 回滾到你已經(jīng)安裝的最后一個版本苦囱。
  • --clean-backups: 在更新過程中刪除舊的備份,這使得更新過后的當(dāng)前版本是唯一可用的備份脾猛。

更改配置 config

config 命令允許你編輯 Composer 的一些基本設(shè)置沿彭,無論是本地的 composer.json 或者全局的 config.json文件。

composer config --list

更改配置-使用方法

config [options] [setting-key] [setting-value1] ... [setting-valueN]

setting-key 是一個配置選項的名稱尖滚,setting-value1 是一個配置的值喉刘。可以使用數(shù)組作為配置的值(像 github-protocols)漆弄,多個 setting-value 是允許的睦裳。

有效的配置選項,請查看“架構(gòu)”章節(jié)的 config 撼唾。

更改配置-參數(shù)

  • --global (-g): 操作位于 $COMPOSER_HOME/config.json 的全局配置文件廉邑。如果不指定該參數(shù),此命令將影響當(dāng)前項目的 composer.json 文件倒谷,或 --file 參數(shù)所指向的文件蛛蒙。
  • --editor (-e): 使用文本編輯器打開 composer.json 文件。默認(rèn)情況下始終是打開當(dāng)前項目的文件渤愁。當(dāng)存在 --global 參數(shù)時牵祟,將會打開全局 composer.json 文件。
  • --unset: 移除由 setting-key 指定名稱的配置選項抖格。
  • --list (-l): 顯示當(dāng)前配置選項的列表诺苹。當(dāng)存在 --global 參數(shù)時,將會顯示全局配置選項的列表雹拄。
  • --file="..." (-f): 在一個指定的文件上操作收奔,而不是 composer.json。注意:不能與 --global 參數(shù)一起使用滓玖。

修改包來源

除了修改配置選項坪哄, config 命令還支持通過以下方法修改來源信息:

composer config repositories.foo vcs http://github.com/foo/bar

創(chuàng)建項目 create-project

你可以使用 Composer 從現(xiàn)有的包中創(chuàng)建一個新的項目。這相當(dāng)于執(zhí)行了一個 git clonesvn checkout 命令后將這個包的依賴安裝到它自己的 vendor 目錄。

此命令有幾個常見的用途:

  1. 你可以快速的部署你的應(yīng)用翩肌。
  2. 你可以檢出任何資源包模暗,并開發(fā)它的補丁。
  3. 多人開發(fā)項目摧阅,可以用它來加快應(yīng)用的初始化汰蓉。

要創(chuàng)建基于 Composer 的新項目,你可以使用 "create-project" 命令棒卷。傳遞一個包名顾孽,它會為你創(chuàng)建項目的目錄。你也可以在第三個參數(shù)中指定版本號比规,否則將獲取最新的版本若厚。

如果該目錄目前不存在,則會在安裝過程中自動創(chuàng)建蜒什。

composer create-project doctrine/orm path 2.2.*

此外测秸,你也可以無需使用這個命令,而是通過現(xiàn)有的 composer.json 文件來啟動這個項目灾常。

默認(rèn)情況下霎冯,這個命令會在 packagist.org 上查找你指定的包。

創(chuàng)建項目-參數(shù)

  • --repository-url: 提供一個自定義的儲存庫來搜索包钞瀑,這將被用來代替 packagist.org沈撞。可以是一個指向 composer 資源庫的 HTTP URL雕什,或者是指向某個 packages.json 文件的本地路徑缠俺。
  • --stability (-s): 資源包的最低穩(wěn)定版本,默認(rèn)為 stable贷岸。
  • --prefer-source: 當(dāng)有可用的包時壹士,從 source 安裝。
  • --prefer-dist: 當(dāng)有可用的包時偿警,從 dist 安裝躏救。
  • --dev: 安裝 require-dev 字段中列出的包。
  • --no-install: 禁止安裝包的依賴户敬。
  • --no-plugins: 禁用 plugins落剪。
  • --no-scripts: 禁止在根資源包中定義的腳本執(zhí)行。
  • --no-progress: 移除進度信息尿庐,這可以避免一些不處理換行的終端或腳本出現(xiàn)混亂的顯示。
  • --keep-vcs: 創(chuàng)建時跳過缺失的 VCS 呢堰。如果你在非交互模式下運行創(chuàng)建命令抄瑟,這將是非常有用的。

打印自動加載索引 dump-autoload

某些情況下你需要更新 autoloader,例如在你的包中加入了一個新的類皮假。你可以使用 dump-autoload 來完成鞋拟,而不必執(zhí)行 installupdate 命令。

此外惹资,它可以打印一個優(yōu)化過的贺纲,符合 PSR-0/4 規(guī)范的類的索引,這也是出于對性能的可考慮猴誊。在大型的應(yīng)用中會有許多類文件,而 autoloader 會占用每個請求的很大一部分時間侮措,使用 classmaps 或許在開發(fā)時不太方便懈叹,但它在保證性能的前提下,仍然可以獲得 PSR-0/4 規(guī)范帶來的便利分扎。

打印自動加載索引-參數(shù)

  • --optimize (-o): 轉(zhuǎn)換 PSR-0/4 autoloading 到 classmap 獲得更快的載入速度澄成。這特別適用于生產(chǎn)環(huán)境,但可能需要一些時間來運行畏吓,因此它目前不是默認(rèn)設(shè)置墨状。
  • --no-dev: 禁用 autoload-dev 規(guī)則。

查看許可協(xié)議 licenses

列出已安裝的每個包的名稱菲饼、版本肾砂、許可協(xié)議“头啵可以使用 --format=json 參數(shù)來獲取 JSON 格式的輸出通今。

執(zhí)行腳本 run-script

你可以運行此命令來手動執(zhí)行 腳本,只需要指定腳本的名稱肛根,可選的 --no-dev 參數(shù)允許你禁用開發(fā)者模式辫塌。

診斷 diagnose

如果你覺得發(fā)現(xiàn)了一個 bug 或是程序行為變得怪異,你可能需要運行 diagnose 命令派哲,來幫助你檢測一些常見的問題臼氨。

composer diagnose

歸檔 archive

此命令用來對指定包的指定版本進行 zip/tar 歸檔。它也可以用來歸檔你的整個項目芭届,不包括 excluded/ignored(排除/忽略)的文件储矩。

composer archive vendor/package 2.0.21 --format=zip

歸檔-參數(shù)

  • --format (-f): 指定歸檔格式:tar 或 zip(默認(rèn)為 tar)。
  • --dir: 指定歸檔存放的目錄(默認(rèn)為當(dāng)前目錄)褂乍。

獲取幫助信息 help

使用 help 可以獲取指定命令的幫助信息持隧。

composer help install

環(huán)境變量

你可以設(shè)置一些環(huán)境變量來覆蓋默認(rèn)的配置。建議盡可能的在 composer.jsonconfig 字段中設(shè)置這些值逃片,而不是通過命令行設(shè)置環(huán)境變量屡拨。值得注意的是環(huán)境變量中的值,將始終優(yōu)先于 composer.json 中所指定的值。

COMPOSER

環(huán)境變量 COMPOSER 可以為 composer.json 文件指定其它的文件名呀狼。

例如:

COMPOSER=composer-other.json php composer.phar install

COMPOSER_ROOT_VERSION

通過設(shè)置這個環(huán)境變量裂允,你可以指定 root 包的版本,如果程序不能從 VCS 上猜測出版本號哥艇,并且未在 composer.json 文件中申明绝编。

COMPOSER_VENDOR_DIR

通過設(shè)置這個環(huán)境變量,你可以指定 composer 將依賴安裝在 vendor 以外的其它目錄中貌踏。

COMPOSER_BIN_DIR

通過設(shè)置這個環(huán)境變量十饥,你可以指定 binVendor Binaries)目錄到 vendor/bin 以外的其它目錄。

http_proxy or HTTP_PROXY

如果你是通過 HTTP 代理來使用 Composer哩俭,你可以使用 http_proxyHTTP_PROXY 環(huán)境變量绷跑。只要簡單的將它設(shè)置為代理服務(wù)器的 URL。許多操作系統(tǒng)已經(jīng)為你的服務(wù)設(shè)置了此變量凡资。

建議使用 http_proxy(小寫)或者兩者都進行定義砸捏。因為某些工具,像 git 或 curl 將使用 http_proxy 小寫的版本隙赁。另外垦藏,你還可以使用 git config --global http.proxy <proxy url> 來單獨設(shè)置 git 的代理。

no_proxy

如果你是使用代理服務(wù)器伞访,并且想要對某些域名禁用代理掂骏,就可以使用 no_proxy 環(huán)境變量。只需要輸入一個逗號相隔的域名 排除 列表厚掷。

此環(huán)境變量接受域名续誉、IP 以及 CIDR地址塊辖试。你可以將它限制到一個端口(例如::80)伊约。你還可以把它設(shè)置為 * 來忽略所有的 HTTP 代理請求嘁信。

HTTP_PROXY_REQUEST_FULLURI

如果你使用了 HTTP 代理,但它不支持 request_fulluri 標(biāo)簽抡爹,那么你應(yīng)該設(shè)置這個環(huán)境變量為 false0掩驱,來防止 composer 從 request_fulluri 讀取配置。

HTTPS_PROXY_REQUEST_FULLURI

如果你使用了 HTTPS 代理冬竟,但它不支持 request_fulluri 標(biāo)簽欧穴,那么你應(yīng)該設(shè)置這個環(huán)境變量為 false0 ,來防止 composer 從 request_fulluri 讀取配置泵殴。

COMPOSER_HOME

COMPOSER_HOME 環(huán)境變量允許你改變 Composer 的主目錄涮帘。這是一個隱藏的、所有項目共享的全局目錄(對本機的所有用戶都可用)笑诅。

它在各個系統(tǒng)上的默認(rèn)值分別為:

  • *nix /home/<user>/.composer焚辅。
  • OSX /Users/<user>/.composer映屋。
  • Windows C:\Users\<user>\AppData\Roaming\Composer苟鸯。

COMPOSER_HOME/config.json

你可以在 COMPOSER_HOME 目錄中放置一個 config.json 文件同蜻。在你執(zhí)行 installupdate 命令時,Composer 會將它與你項目中的 composer.json 文件進行合并早处。

該文件允許你為用戶的項目設(shè)置 配置信息資源庫湾蔓。

全局項目 存在相同配置項,那么項目中的 composer.json 文件擁有更高的優(yōu)先級砌梆。

COMPOSER_CACHE_DIR

COMPOSER_CACHE_DIR 環(huán)境變量允許你設(shè)置 Composer 的緩存目錄默责,這也可以通過 cache-dir 進行配置。

它在各個系統(tǒng)上的默認(rèn)值分別為:

  • *nix and OSX $COMPOSER_HOME/cache咸包。
  • Windows C:\Users\<user>\AppData\Local\Composer%LOCALAPPDATA%/Composer桃序。

COMPOSER_PROCESS_TIMEOUT

這個環(huán)境變量控制著 Composer 執(zhí)行命令的等待時間(例如:git 命令)。默認(rèn)值為300秒(5分鐘)烂瘫。

COMPOSER_DISCARD_CHANGES

這個環(huán)境變量控制著 discard-changes config option媒熊。

COMPOSER_NO_INTERACTION

如果設(shè)置為1,這個環(huán)境變量將使 Composer 在執(zhí)行每一個命令時都放棄交互坟比,相當(dāng)于對所有命令都使用了 --no-interaction芦鳍。可以在搭建 虛擬機/持續(xù)集成服務(wù)器 時這樣設(shè)置葛账。

{
    "repositories": [
        {
            "packagist": false
        }
    ]
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末柠衅,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子籍琳,更是在濱河造成了極大的恐慌菲宴,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,183評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件趋急,死亡現(xiàn)場離奇詭異喝峦,居然都是意外死亡,警方通過查閱死者的電腦和手機宣谈,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,850評論 3 399
  • 文/潘曉璐 我一進店門愈犹,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人闻丑,你說我怎么就攤上這事漩怎。” “怎么了嗦嗡?”我有些...
    開封第一講書人閱讀 168,766評論 0 361
  • 文/不壞的土叔 我叫張陵勋锤,是天一觀的道長。 經(jīng)常有香客問我侥祭,道長叁执,這世上最難降的妖魔是什么茄厘? 我笑而不...
    開封第一講書人閱讀 59,854評論 1 299
  • 正文 為了忘掉前任,我火速辦了婚禮谈宛,結(jié)果婚禮上次哈,老公的妹妹穿的比我還像新娘。我一直安慰自己吆录,他們只是感情好窑滞,可當(dāng)我...
    茶點故事閱讀 68,871評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著恢筝,像睡著了一般哀卫。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上撬槽,一...
    開封第一講書人閱讀 52,457評論 1 311
  • 那天此改,我揣著相機與錄音,去河邊找鬼侄柔。 笑死共啃,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的勋拟。 我是一名探鬼主播勋磕,決...
    沈念sama閱讀 40,999評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼敢靡!你這毒婦竟也來了挂滓?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,914評論 0 277
  • 序言:老撾萬榮一對情侶失蹤啸胧,失蹤者是張志新(化名)和其女友劉穎赶站,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體纺念,經(jīng)...
    沈念sama閱讀 46,465評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡贝椿,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,543評論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了陷谱。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片烙博。...
    茶點故事閱讀 40,675評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖烟逊,靈堂內(nèi)的尸體忽然破棺而出渣窜,到底是詐尸還是另有隱情,我是刑警寧澤宪躯,帶...
    沈念sama閱讀 36,354評論 5 351
  • 正文 年R本政府宣布乔宿,位于F島的核電站,受9級特大地震影響访雪,放射性物質(zhì)發(fā)生泄漏详瑞。R本人自食惡果不足惜掂林,卻給世界環(huán)境...
    茶點故事閱讀 42,029評論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望坝橡。 院中可真熱鬧泻帮,春花似錦、人聲如沸驳庭。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,514評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽饲常。三九已至,卻和暖如春狼讨,著一層夾襖步出監(jiān)牢的瞬間贝淤,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,616評論 1 274
  • 我被黑心中介騙來泰國打工政供, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留播聪,地道東北人。 一個月前我還...
    沈念sama閱讀 49,091評論 3 378
  • 正文 我出身青樓布隔,卻偏偏與公主長得像离陶,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子衅檀,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,685評論 2 360