2017-07-24 150 views
2

我正在学习使用webpack,通常进入Javascript世界,包括npm。使用npm installnpm install --save曾经用过webpack吗?

Severalanswers处理--save VS --save-dev。我的理解是,他们使用(和更新package.json)再造无论是运行或通过npm install <the package being developed or ran>

  • --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的假设是否正确?

+1

我会使用带WebPack的'--save-dev',因为它只是开发和构建环境所必需的。 –

+0

它会进入您的产品包吗?_yes:_'--save' _no:_'--save-dev' – Damon

+0

@Damon:为什么'''保存'在进入产品包时?它将在服务器中提供,仅此而已。该模块本身永远不会用于产品(除了在JS束中) – WoJ

回答

0

在应用程序的生产版本中使用的任何东西都应该在save中列出。例如,如果您使用React,您的应用程序会在最终生产版本中使用React。无关紧要的是你的文件被捆绑了,但是它在编译时严重依赖于运行。

在开发过程中使用的任何东西都应该列在devDependency下。在这个例子中,一旦WebPack完成文件捆绑,我们不再关心WebPack,因为它不是最终编译文件的一部分。

--save-dev的:这是你的应用程序中使用,如爱可信,反应,Vue公司或图表一切 - 即开发过程中使用,如单元测试框架或捆扎机等

--save什么。 JS等

+0

*因为它是您应用程序的重要资产* - 我不明白。这些模块不会被我的应用程序在JS包之外使用。捆绑包和HTML文件可以存放在CDN上,例如远离我的开发服务器(或者服务于这些HTML和JS文件的服务器) – WoJ

+1

@WoJ您的应用程序能否在没有WebPack的情况下运行?是的,它只是一个捆绑器,可以由Browserify或其他替代捆绑器代替。如果您的应用程序是React应用程序,它可以在没有React的情况下运行吗?不,你必须从头开始重写整个应用程序,这就是它为什么会存在的原因 - 保存 – Win

+0

我不知道React(名字旁边),但我相信这是一个建立被动前端的库(据我所知,Vue.js从React借了很多)。如果是这样的话:React应用程序是否可以从CDN提供,也就是说,它是否仅由HTML,JS和CSS文件组成,而没有后端?如果是这样 - 它不需要坐在'--save'中,因为当运行应用程序时,模块永远不会被直接访问(只能通过webpack生成的JS包) – WoJ