我在这里阅读到使用 --save
选项的相关内容[链接],它说这将把安装的软件包添加到您的package.json
文件中。但为什么不是自动的呢?难道您不希望始终如此吗?
我的理解是,node_modules
是实际保存软件包代码的目录,而package.json
是您已安装的所有软件包的引用/列表。当您将其推送到存储库时,只需推送后者而不是前者,以节省空间。
因此,难道您不希望您的软件包始终位于package.json
中,以便每个人都能获得所需内容吗?
我在这里阅读到使用 --save
选项的相关内容[链接],它说这将把安装的软件包添加到您的package.json
文件中。但为什么不是自动的呢?难道您不希望始终如此吗?
我的理解是,node_modules
是实际保存软件包代码的目录,而package.json
是您已安装的所有软件包的引用/列表。当您将其推送到存储库时,只需推送后者而不是前者,以节省空间。
因此,难道您不希望您的软件包始终位于package.json
中,以便每个人都能获得所需内容吗?
使用像 Bower 或 npm 这样的包管理器,我认为不会自动使用 --save
,原因如下:
--save-dev
)。package.json
。没有使用 --save
安装的软件包不被视为依赖项,并且保持分离。您可以使用 npm ls
轻松检测它们作为外部软件包,并使用 npm prune
立即删除它们。
现在,如果您认为外部软件包是不好的,您当然可以在每次安装新软件包时使用 --save
。出于实际原因,请注意您可以使用 -S
来代替 --save
的简写方式。此外,如果您经常忘记使用该选项,则可以在 shell 中定义别名。
最后,如果您使用 Yarn,请注意,yarn add
命令将每个软件包添加为依赖项。不再需要 --save
标志。
package.json
文件(不建议),或者重新执行命令 npm i <pkg> -S
。 - Badacadabranpm install
]会将依赖保存到package.json
文件中,如果你不想让它添加到你的项目package.json
文件中,你需要使用--no-save
标志。 - Govind Rai引用npm维护人员之一的话:
过去几年间,这里发生了很多变化,使得这个问题的部分内容变得无关紧要: [...] 对于最终用户来说,运行
npm config set save true
足够容易。 尽管如此,在将--save
设为默认值时仍存在一些问题:
- 在安装过程中必须记住
--save
或--save-dev
,这增加了认知负荷,但也迫使您在安装时选择包是dependency
还是devDependency
。- 将包从
package.json
中的一个部分移动到另一个部分仍然比它应该的要困难一些,这样当您忘记指定某些内容为devDependency时,需要清理它们时就会有麻烦。 [...] 因此,我认为将所有人默认保存所有内容并不符合最佳利益。