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

Posted

技术标签:

【中文标题】当构建二进制文件包含在 gitignore 中时构建分布式 Vue CLI 项目?【英文标题】:Building a distributed Vue CLI project when the build binary is included in gitignore? 【发布时间】:2021-04-07 22:02:02 【问题描述】:

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

我使用 Vue CLI 创建我的项目,并注意到在 node_modules/.bin 目录(由 Vue CLI 创建)下,除了许多其他二进制文件之外,还有一个名为 vue-cli-service 的文件出现 成为 Vue CLI 构建工具。

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

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

...那么这些不是相互排斥的约定吗?

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

知道我一定在这里遗漏了一些东西,我只是不知道它是什么。有人有什么想法吗?

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

以上是关于当构建二进制文件包含在 gitignore 中时构建分布式 Vue CLI 项目?的主要内容,如果未能解决你的问题,请参考以下文章

Visual Studio:当链接文件在项目中时,docker build 失败

当 HTML 标签包含在 JavaScript 代码中时,如何使 JSHint 发出警告?

.gitignore 无效

Git删除状态显示更改

Wt c++ 与 Postgresql

验证存档时二进制的无效架构