当构建二进制文件包含在 gitignore 中时构建分布式 Vue CLI 项目?

Building a distributed Vue CLI project when the build binary is included in gitignore?

Vue 新手,使用@vue/cli 4.4.6.

我使用 Vue CLI 创建了我的项目,并注意到在 node_modules/.bin 目录(Vue CLI 创建的)下,有一个名为 vue-cli-servicevue-cli-service 似乎 是 Vue CLI 构建工具。

这对我来说有点奇怪,来自主要使用外部构建工具(如 Gradle、Maven 和 SBT)的“后端”背景,将构建工具嵌入到项目中!我本以为您会下载 vue-cli-service 作为命令行工具(就像我使用 vue-cli 所做的那样),然后将其指向您要构建的项目。但这就像每个 Java 项目都包含 Gradle 的副本或其中包含 Maven 本身!这真的是一个正确形成的 Vue 项目的意图,还是我搞砸了什么?

我问是因为 vue create hello-world 创建了一个 .gitignore,其中专门列出了 node_modules...

...所以这些不是相互排斥的约定吗?

  1. vue create hello-world 创建一个包含 node_modules/.bin/vue-cli-service 的“原始”(未构建)项目,这似乎是构建它的方式。但它还在 .gitignore
  2. 中提到了 node_modules
  3. 所以开发人员 #1 创建了一个新项目并能够构建它,然后他们将其推送到 git 存储库。由于 node_modules 列在 .gitignore 中,构建工具未包含在推送中
  4. 开发人员 #2 将 repo 拉下来以处理新的功能分支。但是哎呀。由于 node_modules/.bin/vue-cli-service 被忽略,他们在本地分支中没有它,因此他们无法构建它。

知道我一定是漏掉了什么,我只是不知道是什么。有人有什么想法吗?

在 Node 项目中,构建实用程序在项目的 package.json 中是 specified as devDependencies 是很常见的,这是可以接受的,因为实用程序本身通常相对较小并且安装起来很快。只有 Node 和包管理器(npmyarn)应该预装在开发者机器上。

开发人员需要将这些 package.json 依赖项安装到 bootstrap 开发(如果 package-lock.json 存在,则使用 npm installnpm ci),类似于先决条件 Gradle/Maven 需要安装构建插件 post-clone 才能成功构建项目。 package.json 中指定的每个依赖项的版本字符串(始终提交给源代码控制)确保所有开发人员和 CI 使用相同版本的依赖项。