npm install --save 曾经与 webpack 一起使用过吗?
Posted
技术标签:
【中文标题】npm install --save 曾经与 webpack 一起使用过吗?【英文标题】:Is npm install --save ever used with webpack? 【发布时间】:2017-12-30 12:26:28 【问题描述】:我正在学习使用 webpack 并开始接触 javascript 世界,包括 npm
。
Severalanswers 处理 --save
与 --save-dev
时使用 npm install
。我的理解是,在通过npm install <the package being developed or ran>
重新创建运行或开发环境时,它们的使用(以及对package.json
的更新)实际上很有用
--save
用于保存运行应用程序所需的包在 node.js 中,即在服务器上
--save-dev
用于保存开发应用所需的包
一个裸露的npm install <module>
只是安装包,而不能通过package.json
中的相应条目将其安装在其他地方
因此,在 webpack 上下文中,--save
曾经被使用过吗?我不相信,因为创建的是一个 JS 包,然后包含在 html 文件中,并在浏览器中运行。从这个意义上说,永远不需要“保存运行您的应用所需的模块”。
同样,--save-dev
很有用(同样,在 webpack 上下文中)它允许某人在其他地方开发(在这种情况下,应用程序中的两个模块(例如,moment.js
)和后勤模块(例如, gulp
) 应该和--save-dev
一起安装吧?)
最后,一个简单的npm install <module>
也是可能的(尽管不太有用),因为开发不打算在其他地方进行(模块仍然安装,但在package.json
中没有提及这一事实)。
这是正确的吗?具体来说,在 webpack 上下文中缺少 --save
的假设是否正确?
【问题讨论】:
我会将--save-dev
与 WebPack 一起使用,因为它仅用于开发和构建环境。
它会进入你的产品包吗? 是: --save
否: --save-dev
@Damon:为什么要在产品包中使用--save
?它将在该捆绑包中,由服务器提供服务,仅此而已。模块本身永远不会在 prod 中使用(除非在 JS 包中)
@SumnerEvans:这也是我的假设
如果你没有发布 NPM 模块而只是使用 NPM 来管理你的前端资产,我想这没关系。你的构建工具应该只包含你的包中实际使用的东西。唯一的情况是让您自己或其他开发人员清楚“这是在我的应用程序中使用的”与“这是我用于测试、构建、转译等的东西”。您可以将其中任何一个放在您希望的位置并使其发挥作用。
【参考方案1】:
它在您的应用程序的生产版本中使用的任何内容都应列在save
中。例如,如果您使用 React,您的应用程序会在最终的生产构建中使用 React。您的文件是否被捆绑并不重要,重要的是它在编译时严重依赖于运行。
在开发过程中使用的任何东西都应该列在 devDependency 下。在这个例子中,一旦 WebPack 完成了文件的打包,我们就不再关心 WebPack,因为它不是最终编译文件的一部分。
--save-dev :在开发过程中使用的任何东西,例如单元测试框架或捆绑器等。
--save : 在您的应用程序中使用的任何内容,例如 Axios、React、Vue 或 Chart.JS 等。
【讨论】:
因为它是您应用程序的重要资产——我不明白。我的应用程序不会在 JS 包之外使用这些模块。例如,捆绑包和 HTML 文件可以存在于 CDN 上,远离我的开发服务器(或刚刚提供这些 HTML 和 JS 文件的服务器) @WoJ 您的应用程序可以在没有 WebPack 的情况下运行吗?是的,它只是一个捆绑器,可以被 Browserify 或任何替代捆绑器替换。如果你的应用程序是一个 React 应用程序,它可以在没有 React 的情况下运行吗?不,您必须从头开始重写整个应用程序,这就是为什么它位于 --save 我不知道 React(除了名字之外),但我相信这是一个构建响应式前端的库(我知道 Vue.js,据称它从 React 借了很多东西)。如果是这种情况:是否可以从 CDN 提供 React 应用程序,即它是否仅由 HTML、JS 和 CSS 文件组成而没有后端?如果是这样 - 它不需要坐在--save
,因为在运行应用程序时,模块永远不会直接访问(仅通过 webpack 生成的 JS 包)
@WoJ 你想在生产中加载的任何东西都应该在你的依赖列表中。如果 React 是其中的一部分,那么它应该在您的依赖项列表中而不是开发依赖项中。任何用于帮助创建应用程序的东西,例如 babel 或 webpack,都被列为 dev 依赖项,因为一旦它被编译,我们就不再关心 webpack 或 babel,因为所有繁重的工作都已经完成,并且与最终输出。我们不再需要 webpack 或 babel 来在生产环境中运行应用程序,在最终构建中仍然使用 React。
我真的不明白。 运行您的应用程序时,您不需要任何 React 组件(如您所说,“在生产中加载”)。你需要的一切都在 webpack 生成的 JS 包中。这个捆绑包连同加载它的 HTML 就是运行应用程序所需的全部内容。因此,您需要再次拥有所有模块的唯一情况是开发,在这种情况下应该使用--save-dev
。以上是关于npm install --save 曾经与 webpack 一起使用过吗?的主要内容,如果未能解决你的问题,请参考以下文章
npm install --save 与 npm install --save-dev 的区别
npm install --save 与 npm install --save-dev 的区别
npm install --save 与 npm install --save-dev 的区别