使用webpack时的dependencies和devDependencies

5
当我使用webpack时,将任何模块放入package.json的dependencies中是否有意义?
当我想要开发一个包时,我使用“git clone ”然后“npm install”,然后npm从package.json文件安装所有依赖项和devDependencies,这是有意义的。
当我是最终用户,我只想在我的项目中安装一些包到我的node_modules中,我运行“npm install package-name”,然后npm仅安装其依赖项的package-name,并且这也是有意义的。
但是,当我使用webpack时,将任何模块放入dependencies中是否有意义?Webpack将捆绑所有依赖项到例如bundle.js中,因此对我来说,没有必要安装依赖项(因为它们已包含在bundle.js文件中)。
假设我将所有必要的模块放入my-project的devDependencies中(保持dependencies对象为空),然后使用webpack进行打包和发布:
- 开发人员用户将使用“git clone ”,然后运行“npm install”,然后npm将从package.json安装devDependencies(并省略空的dependencies对象),然后准备好进行开发。 - 最终用户将使用“npm install my-project”,然后npm将安装my-project,不安装devDependencies(因为这是用于生产),也不安装dependencies(因为package.json中的dependencies对象保持为空)。将任何内容放入dependencies将使依赖项加倍:两个依赖项都将被安装,并且相同的依赖项将在bundle.js文件中可用。
我是正确的吗?
1个回答

1

你说得对,一旦使用webpack进行转译,可能就不需要依赖关系了。然而,有些包是多用途的,可能会以多种方式使用,因此在某些情况下仍然需要依赖关系。

如果您查看规范中的package.json,有两个可能的入口点,'main'和'browser'。还有一个提议的'module'入口点。目前正在讨论如何在webpack中处理这些条目,用户似乎希望webpack优先考虑它们,即module > browser > main,但目前webpack首先使用browser

优先按照顺序模块 > 浏览器 > 主要的想法是,浏览器可以直接在“浏览器”中使用预编译的内容,而调用您包中的require()include()的另一个项目将使用“模块”条目中的未经过编译的代码。 “模块”条目代码可以包含具有新功能的现代JavaScript,然后需要它的项目/包可以将其转换为自己的规格,例如使用“browserslist”。

我找到这个问题是因为我也在想同样的事情...


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