npm 简介

npm 简介

简单来说,npm(JavaScript Package Manager)就是一个 JavaScript 包管理工具,通过它可以使用封装好的功能模块,也可以封装自己的功能模块。如果只是简单的使用 npm ,那么可以通过安装 Node.js 来安装 npm 。但如果在实际工作过程中,需要对多个版本的 Node.js 进行测试,或者试图以命令行的方式使用获取的模块功能,则可通过 nvm(Node Version Manager)来安装 npm 来规避版本切换或运行权限的问题。

nvm 安装

使用 nvm 工具能够更好的管理和使用 npm 的不同版本,打开 Mac OS X 终端,执行下面的命令:

export NVM_DIR="$HOME/.nvm" && (
  git clone https://github.com/nvm-sh/nvm.git "$NVM_DIR"
  cd "$NVM_DIR"
  git checkout `git describe --abbrev=0 --tags --match "v[0-9]*" $(git rev-list --tags --max-count=1)`
) && \. "$NVM_DIR/nvm.sh"

这几行命令实际是从 github 上将 nvm 下载到本地目录,再执行 nvm.sh 脚本,实现 nvm 的安装,所以升级 nvm 时,需要先拉取最新的代码,再次执行 nvm.sh 脚本。

接着,再将下面的代码添加到 ~/.bashrc,~/.profile, 或 ~/.zshrc 中,来实现终端打开后 nvm 的加载。

export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm

安装后,重启终端,便可以执行下面的命令:

  • nvm install node 下载并编译安装最新版本的 Node.js
  • nvm install v8.16.0 下载并编译安装指定版本的 Node.js
  • nvm ls-remote 查看远程可使用的 Node.js 版本
  • nvm ls 查看本地安装的 Node.js 版本
  • nvm use [node | <version>] 切换到安装的最新或指定的 Node.js 版本
  • nvm exec <version> node --version 执行指定版本的 Node.js
  • nvm which [current | <version>] 查看当前或指定的 Node.js 版本所在位置

使用 node -v 命令,可以查看当前 Node.js 的版本,执行 npm config get prefix 命令,查看模块安装目录的前缀,都可以验证版本切换确实是有效的。

npm 常用命令

  • npm install <package_name>

    安装本地包,如果当前目录下没有 node_modules 目录并且没有 package.json 文件,则会去用户 home 目录下查找 node_modules 目录,有则安装在其目录下,否则,将会在 home 目录下创建 node_modules 目录,并将包安装在该目录下。

  • npm init [-y | --yes]

    实际进行开发工作时,我们更希望在工程目录下安装并管理相关的依赖包,那么在工程目录下使用该命令进行初始化,在当前目录下生成 package.json 文件。如此,再在该目录下执行包安装命令,则包会安装在该目录下。

  • npm install <package_name> [--save | --save-dev]

    可以直接修改 package.json 文件,添加相关的依赖包及其版本,然后再执行 npm install 命令进行安装。但是也可以直接使用上面的命令,安装依赖包,并将依赖信息添加到 package.json 文件中。

  • npm outdated | update

    package.json 目录下,执行上面的命令,检查是否有依赖包更新,或直接进行更新。

  • npm uninstall <package> [--save | --save-dev]

    npm install 相对应,执行上面的命令,可以卸载安装的包。

  • npm install -g <package_name>

    如果想以命令行的方式使用第三方模块所提供的功能,为了可以在任意目录下使用命令,则应将包安装在全局目录下。如,可以执行 npm install npm@latest -g 命令,来更新最新的 npm 工具。

  • npm config set prefix <global-node_modules-path>

    设置包的全局安装路径前缀,在全局安装包时,包会安装到 prefix/lib/node_modules 目录下,并且相应的运行命令会初始化在 prefix/bin 目录下。设置完成后,可以使用 npm config get prefix 命令查验。

npm 的命令,不指定全局模式时,会应用在当前目录下,若不满足条件,则会去用户 home 目录下应用。
npm ls 先在当前目录下查找 node_modules 目录,没有结果,则去用户 home 目录下查找安装的模块。

包与模块

简单来说,包是由 package.json 修饰的一个文件或文件目录,而模块则是可以被 Node.js 使用 require() 引入的任意文件或文件目录。

对于包而言,其表示形式并不局限于一个文件或目录,压缩包,指向压缩包的链接,在 npm 中注册了的包名称,可以进行 git 拷贝的地址等都是包的表现形式,只要其最终指向都是被 package.json 修饰的文件或目录即可。

一个简单的 JavaScript 文件,包含 index.js 文件的目录,或者是拥有 package.json 文件且文件中包含 main 值的目录,都可以被 Node.js 使用 require 加载为一个模块。但是,包并不一定能被加载为一个模块,如一个只被当作命令行工具使用的包。所以在 npm 中,使用 package.json 对定义包的文件进行命名,而安装包的目录却被命名为 node_modules,就是因为加载的模块不一定是包,而包不一定能过被加载为模块。

参考

Node.js 官网:https://nodejs.org

npm 官网:https://www.npmjs.com/

npm 中文文档:https://www.npmjs.cn/

nvm 源码地址:https://github.com/nvm-sh/nvm/blob/master/README.md

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值