NodeJS Vuejs & npm -所有依赖项都应该是devDependencies吗?

4xy9mtcn  于 2023-01-16  发布在  Node.js
关注(0)|答案(3)|浏览(142)

我正在为VueIdeJs构建一个插件组件。使用带有Vue-loader等的标准Webpack配置。
在一个简单的库中,我把我希望"需要"的模块放在package.json中的dependencies中。然而,由于Webpack将把我所有的代码和依赖项编译到一个单独的包中,我不确定在哪里放置这样的依赖项:axios.
希望有人能解释一下。

ovfsdjhp

ovfsdjhp1#

从技术上讲,当使用webpack这样的捆绑器时,结果不会对捆绑过程的输出产生影响。
也就是说,将包划分为dependenciesdevDependencies仍然可以帮助您(以及其他查看您的package.json的人)了解哪些包最终将成为所创建的bundle的一部分(dependencies),哪些包只需要 * 构建 * bundle(devDependencies)。

zbwhf8kr

zbwhf8kr2#

对于dependenciesdevDependencies之间的差异,已经有了一个很好的解释:https://stackoverflow.com/a/22004559/5157538
只要记住主要原则:
如果您需要生产中的软件包,请将其放入dependencies中(在您的情况下,axios很可能应该放在dependecies中)。
如果您只在开发期间需要包,请将其放入devDependencies(例如,生产中不需要的单元测试库应放在devDependencies

1aaf6o9v

1aaf6o9v3#

答案很简单:是的,在上述情况下,所有前端npm依赖项都可以是devDependencies。只有节点生产运行时依赖项(例如,如果您正在使用express和与运行时服务器相关的组件)需要处于"依赖项"中。
以上答案的模糊性是因为对于这些依赖性应该在哪里存在哲学上的分歧。
在我的案例中--在一个安全性很重要的公司工作--我们要求任何与构建和开发相关的东西,除了运行生产代码之外,都被认为是"devDependencies"。为什么呢?这远远超出了分离依赖关系(对我来说)的全部意义/意图:至少在我的上下文中,考虑到它们不用于生产,也不加载,更不用说在生产中使用,通过将它们设置为devDependencies,可以显著降低这些模块的风险。如果您在一个repo中组合了express应用程序和vue应用程序,这一点可能会更明显。如果您设置了这些常规依赖项,那么当您在生产中安装npm时,您的express应用程序将有很多额外的麻烦。

相关问题