展开菜单
首页 精品内容 本月促销 装机必备 Windows PDF教程 macOS软件 IOS软件 Android AI 专题
全部分类

当前位置:

首页 > 编程开发 > Composer怎么只装生产环境依赖_Composer no-dev安装操作方式【详解】

Composer怎么只装生产环境依赖_Composer no-dev安装操作方式【详解】

必须加 --no-dev:生产环境装依赖的第一个纪律 先说一个核心判断:生产环境运行 `composer install`,**必须加上 `--no-dev`**。这不是可选项,而是安全基线。 如果不加,Composer 会默认把 phpunit、php-cs-fixer、lara vel-debu

本文目录

    必须加 --no-dev:生产环境装依赖的第一个纪律

    先说一个核心判断:生产环境运行 `composer install`,**必须加上 `--no-dev`**。这不是可选项,而是安全基线。 如果不加,Composer 会默认把 phpunit、php-cs-fixer、lara vel-debugbar 这类包全部拖进 vendor 目录。不是“可能装”,是“一定装”——只要你的 `composer.lock` 文件里有 `packages-dev` 区块,它就不会放过任何一个 dev 包。

    Composer怎么只装生产环境依赖_Composer no-dev安装操作方式【详解】

    ### 为什么默认安装会带 dev 依赖? 很多人以为 Composer 会看环境变量,比如 `APP_ENV=production` 或者 `COMPOSER_DEV=0` 就能自动跳过 dev 包——这是误解。Composer 根本不管这些。 它只认两样东西:一是 `composer.lock` 文件里记录的内容;二是你有没有传 `--no-dev` 参数。而绝大多数开发者在本地 `composer update` 时生成的 lock 文件,都会包含 `"packages-dev"` 区块。于是生产环境上线时,只要你不说“别碰 dev 那部分”,Composer 就全装。 另外有三件事需要厘清: - `--optimize-autoloader`(或 `-o`)只优化自动加载速度,完全绕不开 dev 包 - `COMPOSER_NO_INTERACTION=1` 跳过交互式提问,对依赖范围零影响 - 有人问:能不能直接在 `composer.json` 里删掉 `require-dev` 字段?不行,本地开发依赖还靠它,而且 commit 后别人也没法用测试工具 ### composer install --no-dev 到底干了什么 **它不是“尽量不装”,而是从依赖解析阶段就直接绕开了 require-dev 这块。** 具体来说:不下载、不解压、不写入 vendor、不注册它们的 autoload 映射——这个映射指的是 `autoload-dev` 下声明的路径,不会出现在 `vendor/autoload_static.php` 里。相当于从源头切断了 dev 依赖的生命线。 几个关键点: - 生效前提是 `composer.lock` 里依然有 `packages-dev` 记录——`--no-dev` 不会报错,也不会去删 lock 文件,只是忽略它 - 如果 lock 文件里已经混进了 phpunit/phpunit,说明上次 `composer update` 时没加 `--no-dev`,得先清理掉再重新生成 - 它不影响 autoload-dev 路径本身的声明——比如 `"Tests\\": "tests/"` 仍然出现在 `vendor/autoload.php` 里。但关键是测试类库没装,所以 `class_exists('Tests\FooTest')` 可能返回 true(如果那个文件物理存在),可类里依赖的 phpunit 类则不存在,运行时就会静默失败 ### Docker 和 CI/CD 里最容易漏掉的三件事 自动化流程里一旦漏掉 `--no-dev`,镜像体积直接多出 20–50MB,启动变慢,还可能暴露调试入口。经验上最容易出问题的是下面三个: 1. **Dockerfile 里只写 `RUN composer install --no-dev` 是不够的**。更稳妥的是组合命令:`RUN rm -rf vendor/ && composer install --no-dev --prefer-dist --optimize-autoloader --no-scripts`。先清空再安装,防止缓存复用导致旧包残留。 2. **CI 脚本中,安装之前最好确认 lock 文件是干净的**。可以加一行验证:`grep -q '"require-dev"' composer.lock && echo "lock is dirty" || echo "safe"`。如果输出 dirty,说明 lock 文件里混了 dev 依赖,需要先修复。 3. **多阶段构建时容易混淆**。build 阶段可以全量安装(含 dev),但 final 阶段用 `COPY --from=builder /app/vendor /app/vendor` 复制过来时,builder 阶段执行的命令必须带上 `--no-dev`。否则 Copy 过来的 vendor 还是带着 dev 包的。 ### --no-dev 和 --production 是什么关系 两者完全等价。Composer 2.0+ 文档明确写了 `--production` 是 `--no-dev` 的别名。但注意:缩写 `--prod` 不存在,输错了会报 `Unrecognized option: --prod`。 一些建议: - 日常推荐统一用 `--no-dev`,语义最清晰,新人一眼能看懂 - 已有 CI 脚本在用 `--production` 的话不必硬改,但新项目就别再用它了 - 它和 `composer dump-autoload --no-dev` 不是一回事。`dump-autoload --no-dev` 只删 autoload 映射,不删已安装的包;而 `install --no-dev` 是从源头就不让 dev 包落地 最后得说一个最容易被忽略的点:**`--no-dev` 只控制“装不装”,不控制“能不能加载”**。如果业务代码里硬编码引用了 `Tests\*` 或 `PhpCsFixer\*` 的类,即使 dev 包没装,autoloader 路径声明仍然存在,运行时也可能因为找不到类而静默崩溃。解决方案是依赖接口抽象,或使用 `class_exists()` 做兜底判断——不能只信一个参数就以为万事大吉。
    本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系bd@zhengruan.com
    作者最新文章
    编程开发 Composer
    相关文章 更多
    精品专题 更多
    装机必备

    正软商城装机必备专区,精选办公、浏览器、安全防护、影音播放、压缩解压、设计创作和系统工具等电脑常用正版软件,帮助用户快速完成新电脑软件配置。

    Windows

    正软商城Windows软件专区,汇集适用于Windows电脑的办公、设计、安全防护、影音播放、开发工具和系统优化软件,提供软件介绍、系统要求、正版授权及购买下载服务。

    PDF教程

    正软商城PDF教程频道提供PDF编辑、转换、合并、拆分、压缩及格式处理方法,同时介绍常用PDF软件和工具的使用技巧。

    macOS软件

    正软商城macOS软件专区,精选适用于Mac电脑的办公、设计、影音、效率、开发和系统工具,提供软件功能介绍、macOS兼容版本、正版授权及购买下载服务。

    IOS软件

    正软商城iOS软件专区,精选适用于iPhone和iPad的办公、学习、影音、设计、效率及AI应用,提供功能介绍、适用设备、系统要求和正版获取方式等信息。

    AI

    正软商城AI软件专区,汇集AI写作、AI绘画、AI视频、AI办公、AI编程、AI翻译、智能客服和数据分析等人工智能工具,提供功能介绍、适用平台、收费方式及正版购买信息。

    Mac软件 更多
    Aperty macOS版
    Aperty macOS版

    Aperty 是 Skylum 推出的 AI 人像修图软件,支持自然肤质修饰、瑕疵处理、面部与身体调整、预设及批量同步。

    火山引擎 网页版
    火山引擎 网页版

    火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

    立刻MV 网页版
    立刻MV 网页版

    立刻MV 面向音乐人、内容创作者和品牌团队,帮助用户低成本完成歌曲 MV、歌词视频、AI 分镜、图生视频与最终合成。

    蛙蛙写作 网页版
    蛙蛙写作 网页版

    蛙蛙写作 AI 创作工具,覆盖小说、剧本、文案,一键生成文稿,打通文字转视频全流程,高效解决创作难题。

    讯飞智作 网页版
    讯飞智作 网页版

    讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

    超级简历WonderCV 网页版
    超级简历WonderCV 网页版

    超级简历WonderCV是面向应届生和AI小白的智能求职平台,覆盖简历、面试与职业规划。

    音述AI 网页版
    音述AI 网页版

    音述AI,是一个以“用声音述说故事”为核心的 AI 音乐创作与声音分享社区。

    AionClaw macOS版
    AionClaw macOS版

    AionClaw 是可在桌面端运行的任务型 AI 助手,通过数字专家与技能市场组合办公、创作、数据和开发能力。

    Loomy macOS版
    Loomy macOS版

    Loomy 是科大讯飞推出的桌面 AI 助手,可通过对话、任务与工作目录协助处理办公、内容创作和资料整理。

    AirBuddy 3 macOS版
    AirBuddy 3 macOS版

    AirBuddy 3 是面向 macOS 的蓝牙外设增强工具,可集中查看 AirPods、Beats 与苹果设备电量,提供快速连接、播放控制、电量提醒、桌面小组件和多台 Mac 外设接力等功能。

    AirServer macOS版
    AirServer macOS版

    AirServer macOS版可把 Mac 转换为无线投屏接收端,通过 AirPlay 或 Google Cast 接收手机、平板和电脑画面,并支持多设备同时连接、高清镜像及会话录制,适合家庭娱乐、课堂教学、会议演示和应用展示。

    AnyDesk macOS版
    AnyDesk macOS版

    AnyDesk macOS版是一款适用于远程办公、设备维护和客户支持的远程桌面工具,可连接并操作异地计算机,支持文件传输、无人值守访问、会话权限控制及跨平台协作。

    WINDOWS 更多
    Maya(Autodesk Maya) Windows版
    Maya(Autodesk Maya) Windows版

    Autodesk Maya 是面向影视、电视、动画和游戏行业的专业三维制作软件,集多边形与 NURBS 建模、角色绑定、关键帧和动作捕捉动画、Bifrost 特效模拟、材质开发及 Arnold 渲染于一体,

    Aperty Windows版
    Aperty Windows版

    Aperty 是 Skylum 推出的 AI 人像修图软件,支持自然肤质修饰、瑕疵处理、面部与身体调整、预设及批量同步。

    火山引擎 网页版
    火山引擎 网页版

    火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

    立刻MV 网页版
    立刻MV 网页版

    立刻MV 面向音乐人、内容创作者和品牌团队,帮助用户低成本完成歌曲 MV、歌词视频、AI 分镜、图生视频与最终合成。

    蛙蛙写作 网页版
    蛙蛙写作 网页版

    蛙蛙写作 AI 创作工具,覆盖小说、剧本、文案,一键生成文稿,打通文字转视频全流程,高效解决创作难题。

    讯飞智作 网页版
    讯飞智作 网页版

    讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

    超级简历WonderCV 网页版
    超级简历WonderCV 网页版

    超级简历WonderCV是面向应届生和AI小白的智能求职平台,覆盖简历、面试与职业规划。

    音述AI 网页版
    音述AI 网页版

    音述AI,是一个以“用声音述说故事”为核心的 AI 音乐创作与声音分享社区。

    AionClaw Windows版
    AionClaw Windows版

    AionClaw 是可在桌面端运行的任务型 AI 助手,通过数字专家与技能市场组合办公、创作、数据和开发能力。

    Loomy Windows版
    Loomy Windows版

    Loomy 是科大讯飞推出的桌面 AI 助手,可通过对话、任务与工作目录协助处理办公、内容创作和资料整理。

    讯飞绘文 网页版
    讯飞绘文 网页版

    讯飞绘文网页版是科大讯飞推出的AI图文创作与内容运营工具,覆盖热点选题、文章生成、稿件校对、智能配图、排版发布和数据复盘等环节,适合自媒体创作者及内容团队在线使用。

    AirServer Windows版
    AirServer Windows版

    AirServer Windows版可把电脑变成AirPlay、Google Cast和Miracast无线投屏接收端,适合会议演示、课堂教学及家庭大屏分享。发送设备通常无需另装客户端,并可同时接收和智能排列多个镜像会话。