使用webpack时的依赖项和devDependencies

时间:2017-06-16 14:14:55

标签: npm webpack dependencies package

当我使用webpack时,将任何模块放入package.json dependencies是否有意义?

当我想开发一个包时,我使用git clone <url>然后npm install,然后npm安装来自dependencies文件的所有devDependenciespackage.json感。

当我是最终用户并且我只想在我的node_modules中安装一些软件包以在我的项目中使用它时,我运行npm install package-name,然后npm安装package-name dependencies,这也是有道理的。

但是当我使用dependencies时,将任何模块放入webpack是否有意义? webpack将所有依赖项捆绑到例如。 bundle.js,因此,对我来说,不需要安装依赖项(当它们被包含在bundle.js文件中时)。

我们假设我将所有必要的模块放入devDependencies(保持dependencies对象为空)以用于我的项目:my-project,将其与webpack捆绑并发布:< / p>

  • 开发者用户将使用git clone <url to my_project>,然后运行npm install,然后npm将从devDependencies安装package.json(并省略空dependencies个对象),然后就可以开发了。
  • 最终用户将使用npm install my-project,然后npm将安装my-project,不安装devDependencies (因为这是用于制作)而不是安装dependencies (因为dependencies中的package.json对象仍为空)。将任何内容放入dependencies 会使依赖关系加倍:将安装两个依赖项,并且可以在bundle.js文件中访问相同的依赖项。

我是对的吗?

1 个答案:

答案 0 :(得分:0)

您是正确的,一旦将其与webpack一起编译后,可能没有任何依赖。但是,有些软件包是多用途的,并且可能以多种方式使用,因此在某些情况下仍可能需要依赖。

如果您查看package.json specification,则有两个可能的入口点:“ main”和“ browser”。还有一个建议的“ module”入口点。目前在discussion中讨论如何在webpack中处理这些问题,用户似乎希望webpack将其优先级设置为module > browser > main,但是browser目前是webpack首先使用的。

module > browser > main顺序对它们进行优先级排序的想法是,浏览器可以直接在“浏览器”中使用预先编译的内容,而另一个项目在您的浏览器上调用require()include()软件包将使用“模块”条目中的未翻译代码。 “模块”输入代码可能包含具有新功能的现代JavaScript,并且项目/程序包要求它随后可以将其转换为自己的规范,例如使用“ browserslist”。

我发现了这个问题,因为我想知道同样的事情...

相关问题