是时候好好学一学 npm 了

是时候“真正”学习一下 npm 了。

基础

安装 npm

事实上可以将 node.js 和 npm 看做一对形影不离的兄弟,所以大多数时候安装完 node.js 就安装了 npm

基础命令

  • npm init => 初始化一个项目,会让你填写一些项目信息,完成后会在当前目录生成一个文件:package.json

package.json 文件事实上值得大书特书,这里你几乎可以看到一个项目基层全貌,

scripts 标签管理项目启动脚本,

dependencies 管理当前项目具体运行

如何管理依赖

文章

npm 管理心得

初入行的朋友可能不会对版本管理有足够的认识,一般根据招聘信息,会了解到项目版本一般由 git 、 svn 控制,但 git 和 svn 管理的实际是业务代码。

毕竟先代早已不是拼页面的刀耕火种时代,伟大的先人研究出了各种自动化框架辅助开发,当代用的最多的还是 webpack 这一框架。

基于 node.js 的强大能力,webpack 被设计的非常智能,就像克劳德的组合大剑,组合不同的模块可以适用于几乎所有场景。

但就像再锋利的剑用久了也会磨损一样,webpack 的模块也要不断推陈出新,而由于现代信息的全球化,一个项目依赖的模块往往来自不同的公司或开发组。

不同的公司或小组自然很难保证自己针对所有用户开发的模块在某个项目的各个项目依赖中保证协调运行。

每当下载项目安装依赖时,各个插件的依赖往往会升级到允许 的最高版本,这时候就有可能会产生各个依赖包不协调的问题。

这时候你就需要管理你的 npm 依赖包版本了,具体可见上文:npm如何管理依赖包的版本

如果你懒得仔细看,这里贴出方法

简单直接,去掉依赖包前面的 ^

npm 中, 依赖前面的 ^ 允许依赖升级到当前版本的最新版,即 ^3.0.4 => 实际安装 3.9.3 版本,去掉即可每次安装都只安装 3.0.4,

但这样也没有办法完全解决问题,因为一个依赖包往往也会有很多依赖包,只去掉你项目中的显然不够,虽然也有去掉依赖包中的 ^ 的方法,

但太过繁琐,这里还是推荐使用下面的方法。

npm shrinkwrap 锁定版本

1
2
3
4
// 这条命令可以锁定当前依赖包以及依赖包的依赖包,
// 生成一个 npm-shrinkwrap.json 文件,
// 下次重新拉项目后安装模块时,会优先安装此文件中锁定的项目版本
npm shrinkwrap