对我来说似乎很奇怪我对不应该做的事情产生依赖性冲突。让我们以angular和angular-datepicker为例。
当我添加对angular-datepicker的依赖时,我得到另一个角度版本的冲突。
在npm中,已解析的依赖项在运行时使用。所以如果angular-datepicker是在npm中运行的话,它会在运行时使用自己的angular版本。这是有道理的。
然而在bower中并非如此,因为运行时版本是共享的,而angular-datepicker的angular版本仅用于开发,而不用于运行时。
我添加的库越多,它就越难“满足”所有。
在我看来,像所有库都应该将angular声明为devDependency而不是依赖 - 因为他们期望使用它们的项目直接依赖于角度而不是使用它们的角度。然后,我何时应该使用依赖项?
有人可以向我澄清这个问题。
答案 0 :(得分:1)
您应该使用devDependency
作为开发人员可能需要的部分应用程序来构建/测试/编译/提供应用程序。像你的测试套件或你的gulp /其他任务跑步者。
您应该使用dependency
来运行客户端运行已编译应用程序所需的任何内容。在您的情况下,Angular和Angular日期选择器都是依赖项。
一个主要区别是,如果你运行bower install -p(用于生产),你只需要安装到你的bower_components目录中并忽略devDependencies。
听起来发生的事情是你的应用程序正在运行一个版本的Angular,而你的Angular-datepicker插件正在运行不同版本的Angular。一个好的解决方案是将所有内容更新到最新的Angular版本,或者如果不可能,请选择与您正在运行的Angular版本兼容的angular-datepicker插件的版本。