如何在生产 Web 服务器上获取 composer/npm 项目?

How to get a composer/npm project onto production webserver?

我在网上搜索过,但没有真正找到令我满意的答案...

如果我准备好使用 npm 或 composer 将其上传到网络服务器的项目,我如何 "export" 将它准确地上传到网络服务器。因为您通常不会将完整的 node_modules 目录上传到网络 space 因为您不必将 space 浪费在开发文件上,例如演示什么的。因此,您可以只将需要的文件上传到网络服务器上,但是对于链接和大型项目来说,这也意味着需要大量工作来获取您需要的文件。

那我该怎么办?

在部署JS部件时,通常会将它们从很多模块编译成少量文件(可能是单个文件)。您只需要部署已编译的部分(这就是为什么您可以跳过node_modules)。一个很好的例子可能是 jQuery 的源代码,您可以在 https://github.com/jquery/jquery/tree/master/src. It consists of many files, while the "compiled" version 找到它只包含一个更密集的文件。在开发中拥有可读文件有助于监督更改 - 在生产中拥有单个密集文件可加快使用 HTTP 的交付速度。

相比之下,PHP不是一种编译型语言,而是一种需要解释服务器上所有源文件(包括您自己编写的代码和vendor中的库)的语言。在 运行 启动您的应用程序时,将读取所有必要的文件。除了保持预加载或 OpCache,这意味着:真正 读取 这些确切的文件,而不是一些编译版本。这就是为什么您不能跳过部署所有这些文件的原因。

如果您搜索要跳过的部分:如果您不打算 运行 您的应用程序处于开发模式,您可以在部署脚本中调用 composer install --no-dev。这会删除仅在开发过程中需要的依赖项,例如 Symfony 的分析和 Web 工具栏,或 CI 工具,例如 PhpUnit 或 PHPCS