我开始语境化。我创建的这个 GitHub 存储库只有一个文件上传到它,一个文件package.json
,我从我使用的自定义 Web 应用程序模板中提取。该应用程序使用各种工具和框架,包括 AngularJS、Bootstrap 3、SASS 等,并使用 Grunt 作为自动化程序。
我建议的这种情况的两个相关方面是:
NPM用作包管理器。
在存储库中没有文件
.gitignore
,即没有文件来指定 Git 忽略哪些文件/文件夹。这对后来发生的事情至关重要。
该文件的内容package.json
,与它出现在存储库中一样,如下所示:
{
"name": "miproyecto",
"version": "1.0.0",
"description": "",
"main": "Gruntfile.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "",
"license": "ISC",
"devDependencies": {
"grunt": "^1.0.4",
"grunt-angular-templates": "^1.2.0",
"grunt-contrib-connect": "^2.1.0",
"grunt-contrib-copy": "^1.0.0",
"grunt-contrib-cssmin": "^3.0.0",
"grunt-contrib-htmlmin": "^3.1.0",
"grunt-contrib-jshint": "^2.1.0",
"grunt-contrib-sass": "^1.0.0",
"grunt-contrib-uglify": "^4.0.1",
"grunt-contrib-watch": "^1.1.0",
"grunt-htmlhint": "^0.9.13",
"grunt-stylelint": "^0.12.0",
"load-grunt-tasks": "^5.1.0",
"stylelint": "^11.1.1"
},
"dependencies": {
"@fortawesome/fontawesome-free": "^5.10.2",
"@uirouter/angularjs": "^1.0.22",
"angular": "^1.7.8",
"angular-animate": "^1.7.8",
"bootstrap": "^3.3.6",
"jquery": "^3.4.1"
}
}
克隆存储库后,在 Visual Studio Code(这是我使用的编辑器)中,我打开一个终端,然后运行npm install
以安装依赖项。
当依赖项的安装完成并生成文件夹node_modules
时,让我感到震惊的是,从 VSC Git 扩展(我已经安装)中,我收到了以下通知(我把它放在图像和文本中):
'[本地文件夹,我有我的存储库的本地副本]'的 git 存储库有太多的活动更改,只有部分 Git 功能将被启用。您想将“node_modules”添加到 .gitignore 吗?
那是指正在发生的活动更改的数量,因此它建议我是否要将文件夹包含node_modules
在一个文件中.gitignore
,该文件到目前为止尚未创建。
考虑到为 GIT 描述的更改量,以及安装的依赖项所暗示的硬盘驱动器的重量,我想问:
- 我应该还是不应该将文件夹包含在
node_modules
Git 应该忽略的文件夹中? - 除了体积和重量方面,做或不做的优缺点是什么?
答案很简单:不。
文件
node_modules
在执行的时候会被重建npm install
,所以只需要检查文件是否有重建的指令,也就是packages.json
.通常,当项目有包管理器时,既不会检查构建结果,也不会检查属于依赖项的模块,只检查指示这些依赖项的文件。
Python 和
pip
、Ruby 和 RubyGems、Go、Haskell 和cabal
等也是如此。