npm是Node.js的包管理工具。它的诞生也极大地促进了前端的发展,而npm与现代前端发展密不可分。本文是npm系列的第一篇,知识很基础。作为一篇热身文章,如果你已经是一个熟练的开发者,可以跳过这篇文章。1.安装npmnpm是基于Node.js的,所以我们需要安装Node.js,有两种方式:Node.js官网nvm(推荐)具体文章可以搜索2.如何使用2.1更新npm//查看npm版本npm-v//更新npm本身npminstallnpm@latest-g2.2安装依赖在实际使用中,我们既安装了本地包(项目依赖),也安装了全局包(命令行工具)。如何管理本地包你可以使用以下命令来安装包:npminstall要删除包,你可以使用命令:npmuninstall在项目中安装包时,它会安装在默认情况下的依赖项。我们可以使用以下参数来控制此行为:-P,--save-prod:在依赖项中记录-D,--save-dev:在devDependencies中记录-O,--save-optional:在optionalDependencies中记录--no-save:no会记录在dependencies中除了这个,还有两个附加参数:-E,--save-exact:语义上不会记录版本号,会显示具体的“1.2.3”-B,--save-bundle:依赖也会记录在bundleDependencies中如果需要删除package.json文件中的依赖,需要在命令后添加参数:npmuninstall--savelodash//删除安装的包时--save-dev也需要指定为--save-dev来卸载npmuninstall--save-devwebpack如何安装全局包全局安装一般用于安装命令行工具,比如gulp和http-server,我们只需要加上-g,例如:npminstall-ghttp-server有时候记不住某个包,应该用什么命令查看所有安装的包://depth代表遍历的深度,如果没有这个参数,所有的Packagedependenciesalsoshownpmlist-g--depth02.3package-lock.jsonpackage-lock.json文件是在项目中安装依赖后自动生成的,里面包含安装的依赖信息,主要用于锁定依赖版本,保证团队之间在安装依赖时不会有差异。3.依赖前面提到了依赖的概念,那么npm中的依赖有哪些呢?dependencies生产环境devDependencies开发环境optionalDependenciesoptionaldependenciespeerDependenciespre-dependenciesbundleDependencies待打包依赖(具体名字我找不到了,看下面具体介绍)3.1dependencies&&devDependencies这两个是我们用的最多的,还有他们最需要关注。假设我们有一个插件magic-lint,用来在提交commit时检查和格式化代码,那么至少有一个prettier插件来美化代码,我们需要保证其他用户可以使用它通常在安装magic-lint之后,然后将prettier列为依赖项。另外,开发magic-lint的过程属于开发环境。我们需要开玩笑来进行测试。普通用户安装时不需要jest。我们可以通过将jest列为devDependencies来避免这种情况。如果添加了--production标志,或者将环境变量NODE_ENV设置为production,npm将不会安装devDependencies中的模块。3.2peerDependencies什么时候使用peerDependencies?假设我们有一个webpack-plugin-god插件,它只是一个webpack插件,并不依赖于webpack,所以webpack不会写在dependencies或者devDependencies中,实际上是针对特定的webpack版本开发的。这时候我们就可以把webpack写成peerDependencies了。3.3optionalDependencies如果有一个包是可选的,我们可以把它归类为optionalDependencies在写代码的时候,我们可以这样使用可选包:json').version}catch(er){foo=null}if(notGoodFooVersion(fooVersion)){foo=null}//..然后稍后在你的程序中..if(foo){foo.doFooThings()}3.4bundleDependencies假设我们有一个package.json:{"name":"awesome-web-framework","version":"1.0.0","bundledDependencies":["renderized","super-streams"]}通过npmpack命令,我们可以得到文件awesome-web-framework-1.0.0.tgz,其中将包含渲染和超级流两个依赖项。在项目中执行npminstallawesome-web-framework-1.0.0.tgz,结构会变成:├──node_modules├──awesome-web-framework│└──rendered│└──super-streams└──xxx4。预览中的下一篇文章将解释npm安装。看完希望能给你惊喜:“哇~原来还能这样”,我就满足了。系列总结什么是npm系列:1.npm简介什么是npm系列:2.install十八招待续