Svelte包应该作为依赖项还是开发依赖项?

19

我知道已经有很多帖子涉及dependencydevDependency之间的区别,但是我没有找到任何一个解释svelte的情况,所以让我们在这里开个新帖。

在大多数的svelte包中,比如svelte-material-ui或者svelte-routing,安装指南要求将包安装为dependency。然而,既然svelte会在构建时编译此包,那么使用它的新库就不需要安装这个svelte包了。所以我不明白为什么它必须成为一个dependency

也许这个问题是基于观点的,但是至少可以了解一下使用哪种方式更好。

2个回答

11
在SvelteKit(Sapper的下一版本)中,dependencydevDependency之间有一个主要区别:任何在(服务器端)endpoint中使用的模块必须是dependency。如果不是,则该项目在部署到无服务器平台时可能无法工作,虽然在本地可以运行。
否则,我更喜欢将所有内容保留为devDependency。我认为这是有道理的,因为Svelte是一个编译器,而这些软件包仅在编译时需要。但是,我认为将所有内容都放在dependency中也不会有害。

2
提供一下这个的来源会更好。并不是我怀疑它,只是想要了解更多。 - sleighty
@BrunoEly:这个问题经常在SvelteKit的Discord聊天室中出现。如果你考虑无服务器函数的工作方式,这也是有道理的。 - Leftium

10
我认为这只是个人意见。如果你没有将你的代码作为NPM包发布,这种区别应该是微小的。例如,可以参考这个相关讨论
在我处理Web项目方面的经验中,区分用于构建/测试(devDependencies)和“在运行时使用”的依赖项(dependencies)是有帮助的。你说得对,在Svelte中,没有任何文字代码会在运行时使用,但这样一来所有东西都会成为devDependency,所以你无法获得有用的区分。 NPM文档指出,区分应该是生产环境与开发/测试环境。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接