当我使用webpack时,将任何模块放入package.json
dependencies
是否有意义?
当我想开发一个包时,我使用git clone <url>
然后npm install
,然后npm安装来自dependencies
文件的所有devDependencies
和package.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
文件中访问相同的依赖项。我是对的吗?
答案 0 :(得分:0)
您是正确的,一旦将其与webpack一起编译后,可能没有任何依赖。但是,有些软件包是多用途的,并且可能以多种方式使用,因此在某些情况下仍可能需要依赖。
如果您查看package.json
specification,则有两个可能的入口点:“ main”和“ browser”。还有一个建议的“ module”入口点。目前在discussion中讨论如何在webpack中处理这些问题,用户似乎希望webpack将其优先级设置为module > browser > main
,但是browser
目前是webpack首先使用的。
按module > browser > main
顺序对它们进行优先级排序的想法是,浏览器可以直接在“浏览器”中使用预先编译的内容,而另一个项目在您的浏览器上调用require()
或include()
软件包将使用“模块”条目中的未翻译代码。 “模块”输入代码可能包含具有新功能的现代JavaScript,并且项目/程序包要求它随后可以将其转换为自己的规范,例如使用“ browserslist”。
我发现了这个问题,因为我想知道同样的事情...