博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
npm 简介
阅读量:4296 次
发布时间:2019-05-27

本文共 2709 字,大约阅读时间需要 9 分钟。

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 官网:

npm 官网:

npm 中文文档:

nvm 源码地址:

转载地址:http://btdws.baihongyu.com/

你可能感兴趣的文章
PCB反推理念
查看>>
京东技术架构(一)构建亿级前端读服务
查看>>
git 提示:error: unable to rewind rpc post data - try increasing http.postBuffer
查看>>
php 解决json_encode中文UNICODE转码问题
查看>>
LNMP 安装 thinkcmf提示404not found
查看>>
PHP empty、isset、innull的区别
查看>>
apache+nginx 实现动静分离
查看>>
通过Navicat远程连接MySQL配置
查看>>
phpstorm开发工具的设置用法
查看>>
Linux 系统挂载数据盘
查看>>
Git基础(三)--常见错误及解决方案
查看>>
Git(四) - 分支管理
查看>>
PHP Curl发送数据
查看>>
HTTP协议
查看>>
HTTPS
查看>>
git add . git add -u git add -A区别
查看>>
apache下虚拟域名配置
查看>>
session和cookie区别与联系
查看>>
PHP 实现笛卡尔积
查看>>
Laravel中的$loop
查看>>