当前位置: 首页 > 知识库问答 >
问题:

npm安装中--save和--save dev的区别是什么?

赫连照
2023-03-14

我试图理解,何时何地使用这些标签,我明白一个是开发依赖项,另一个是项目依赖项,但是当将其用于实时项目时,我没有发现任何差异。我正在寻找一种方法,这将抛出错误的安装类型。有办法做到这一点吗?

共有2个答案

欧阳俊明
2023-03-14

默认情况下,npm install将同时安装devdependency和dependency。您需要使用特定的标志/设置来忽略安装的依赖性。从npm帮助安装

With the --production flag (or when the NODE_ENV environment variable
       is set to production), npm will not install modules listed in
       devDependencies.

显然,当您需要应用程序的主要部分使用的重要内容或生产所需的内容时,不要使用--save-dev或添加到devDependness开发依赖通常只需要像测试和构建这样的东西。

老实说,我不认为使用devdependency有多大好处。排除它们将为您节省最少的空间和时间。使用它,您将面临排除重要依赖项的风险。但我并不是说不要使用它——只是建议对于某些项目,您可能不需要担心它。

戈华茂
2023-03-14

依赖项是项目所依赖的模块,依赖项是用于开发项目的模块。您可以在npmjs网站上阅读详细说明:

如果有人计划在他们的程序中下载并使用您的模块,那么他们可能不希望或不需要下载并构建您使用的外部测试或文档框架。

在这种情况下,最好将这些附加项映射到devdependences对象中。

依赖项示例:请求concat流对象。通过2分配

DevDependency示例:mochatapeeslintgruntbrowserify

依赖项总是安装每当你的项目被安装或初始化,他们是需要你的项目的功能. devDependness是只用于开发(测试框架,任务运行...),他们是安装只有当有人运行npm安装从根项目。例如,在克隆项目存储库之后。

你可以很容易地验证这一点。假设我在同一目录中有模块foobarbazqux。让foo成为baz的依赖项,bar成为baz的依赖项,baz本身成为qux的依赖项。

#/$ cd baz
#/baz$ cat package.json
{
  "name": "baz",
  "version": "0.0.0",
  "dependencies": {
    "foo": "../foo"
  },
  "devDependencies": {
    "bar": "../bar"
  }
}
#/baz$ npm install
baz@0.0.0 /tmp/tmpdir/g6jBr9/baz
├── bar@0.0.0
└── foo@0.0.0

如您所见,依赖项和devdependency都已安装。

现在,让我们将baz安装为qux的依赖项:

#/$ cd quux
#/quux$ cat package.json
{
  "name": "quux",
  "version": "0.0.0",
  "dependencies": {
    "baz": "../baz"
  }
}
#/quux$ npm install
#/quux$ npm ls
quux@0.0.0 /tmp/tmpdir/g6jBr9/quux
└─┬ baz@0.0.0
  └── foo@0.0.0

请注意,安装了foo,但未安装bar。这是因为如果您需要某个模块作为另一个模块的依赖项(即,您是该模块的消费者),则不需要它的依赖项,因为该模块不需要这些依赖项才能正常工作。

 类似资料:
  • 我正在使用持续集成,并发现了npm ci命令。 我不知道对我的工作流使用此命令有什么好处。 更快吗?这会让考试变得更难吗,好吗,然后呢?

  • 问题内容: 之间有什么区别? 和: 这是什么意思? 问题答案: 用于保存软件包以用于开发目的。示例:单元测试,缩小 用于保存应用程序运行所需的软件包。

  • 问题内容: 和之间的实际区别是什么?我什么时候应该使用哪个? 问题答案: 在 package.json中* 指定的软件包版本的npm install 和npm update 处理之间的区别: * 摘要 :唯一的不同是 已经安装的带有模糊版本控制的模块 … 被忽略 得到更新 另外 :和默认手柄devDependencies不同 除非添加标志,否则将 安装/更新 devDependencies 除非添

  • 问题内容: 通过文档,我只能找到一个不同之处,即save方法生成将对象作为生成的标识符返回,但persist不是。这是提供persist方法的唯一目的。如果是的话,即使他不打算这样做对程序员也有帮助要使用生成的标识符,他可以使用save并忽略返回值。 也来通过这个线程有什么优势依然存在(中)与保存()在Hibernate中?。我可以从此线程获取的有意义的语句是 persist(),还可以保证,如果

  • 本文向大家介绍nodejs npm install全局安装和本地安装的区别,包括了nodejs npm install全局安装和本地安装的区别的使用技巧和注意事项,需要的朋友参考一下 npm的包安装分为本地安装(local)、全局安装(global)两种,从敲的命令行来看,差别只是有没有-g而已,比如: 下面分别解释。 1. npm install xxx -g 时, 模块将被下载安装到【全局目录

  • 我刚刚开始使用grunt.js。它很难设置,我现在正在创建文件。 在本教程之后,它说有3种方法可以创建文件。 首先是执行 但是是什么意思呢?我试着找,但没有结果。