当构建二进制文件包含在 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 和包管理器(npm
或 yarn
)应该预装在开发者机器上。
开发人员应安装这些 package.json
依赖项以引导开发(如果存在 package-lock.json
,则使用 npm install
或 npm ci
),类似于需要在克隆后安装先决条件 Gradle/Maven 构建插件的方式项目构建成功。 package.json
中指定的每个依赖项的版本字符串(始终提交到源代码控制)确保所有开发人员和 CI 都使用相同版本的依赖项。
【讨论】:
以上是关于当构建二进制文件包含在 gitignore 中时构建分布式 Vue CLI 项目?的主要内容,如果未能解决你的问题,请参考以下文章
Visual Studio:当链接文件在项目中时,docker build 失败