我试图总结我对最流行的JavaScript包管理器、打包器和任务执行器的了解。如果我错了,请纠正我:

npm和bower是软件包经理。他们只是下载依赖项,不知道如何自己构建项目。他们知道的是在获取所有依赖项后调用webpack/gulp/grunt。bower类似于npm,但构建了一个扁平的依赖树(不像npm递归地执行)。这意味着npm获取每个依赖项的依赖项(可能会多次获取相同的依赖项),而bower希望您手动包含子依赖项。有时bower和npm分别用于前端和后端(因为每个兆字节在前端可能很重要)。gulf和gulf是任务执行器,可以自动完成所有可以自动化的任务(即编译CSS/Sass、优化图像、制作捆绑包和缩小/透明文件)。咕噜vs咕噜(就像maven vs gradle或配置vs代码)。Grunt基于配置单独的独立任务,每个任务打开/处理/关闭文件。Gulp需要更少的代码,并且基于节点流,这允许它构建管道链(不重新打开相同的文件),并使其更快。webpack(webpack-dev-server)-对我来说,它是一个任务运行器,可以热重新加载更改,让你忘记所有JS/CSS观察者。npm/bower+插件可能会取代任务运行器。他们的能力经常交叉,所以如果你需要在npm+插件上使用gulp/grunt,就会有不同的含义。但任务运行器对于复杂的任务来说无疑是更好的(例如,“在每个构建上创建捆绑包,从ES6到ES5转换,在所有浏览器模拟器上运行它,制作屏幕截图并通过ftp部署到dropbox”)。browserify允许为浏览器打包节点模块。browserify vs node的需求实际上是AMD vs CommonJS。

问题:

什么是webpack和webpack开发服务器?官方文档说它是一个模块打包器,但对我来说,它只是一个任务执行器。有什么不同?你会在哪里使用browserify?我们不能对节点/ES6导入执行同样的操作吗?你什么时候会对npm+插件使用gulp/grunt?当您需要使用组合时,请提供示例

我刚刚安装了Node.js和NPM(节点包管理器)

我安装了NPM以访问其他Node.js模块。

在我安装Node.js和NPM之后,我注意到这两个版本都不可用。

我想知道:如何将Node.js、NPM和我的Node.js模块升级到最新版本?

我需要卸载Node.js和NPM并重新安装最新版本吗?

这是到目前为止我所做尝试的链接。此链接是npm的一部分。

npm5今天发布,其中一个新特性包括通过创建package-lock.json文件进行确定性安装。

这个文件应该保存在源代码管理中吗?

我假设它类似于yarn.lock和composer.lock,它们都应该保存在源代码控制中。

我从另一个项目中复制了package.json,现在想将所有依赖项都升级到最新版本,因为这是一个新项目,如果出现问题,我不介意修复。

最简单的方法是什么?

我知道的最好的方法是运行npm info express版本,然后手动更新package.json中的每个依赖项。一定有更好的办法。

{
  "name": "myproject",
  "description": "my node project",
  "version": "1.0.0",
  "dependencies": {
    "express": "^3.0.3", // how do I get these bumped to latest?
    "mongodb": "^1.2.5",
    "underscore": "^1.4.2"
  }
}

有关纱线特定的解决方案,请参阅本堆栈溢出线程。

这个文档很难回答我的问题。我不明白这些解释。有人能用更简单的话说吗?如果很难选择简单的单词,可以举个例子吗?

EDIT还添加了peerDependencies,它密切相关,可能会引起混淆。

如何查找已安装Node.js或npm包的版本?

这将打印npm本身的版本:

npm -v <package-name>

这将打印一个隐藏的错误:

npm version <package-name>

这将在注册表中打印软件包版本(即可用的最新版本):

npm view <package-name> version

如何获取已安装的版本?

我看到了一些教程,其中的命令是:

npm install --save

--save选项是什么意思?

在我升级到最新的稳定节点和npm之后,我尝试了npm安装时刻 --save. 它保存了 package.json 的输入与 caret ^ prefix. 此前,它是一个 tilde ~ prefix。

為什麼這些變化發生在npm? tilde ~ 和 caret ^ 之間的區別是什麼? 對其他人有什麼好處?