zoukankan      html  css  js  c++  java
  • Node.js学习笔记(二) 包管理器

    NPM 是与 Node.js 一起安装的包管理器,用户可以从 NPM 服务器上下载别人编写的模块以提高开发效率

    可以使用 npm --version 命令查看 npm 版本,可以使用 npm install npm -g 命令升级 npm 版本

    1、安装模块

    可以使用 npm install 命令安装模块,安装模块的方式有两种,分别是本地安装(local)和全局安装(global)

    • 本地安装的模块会放在当前目录中的 node_modules 目录下,可以通过 require() 引入程序

    • 全局安装的模块会放在全局目录中,可以直接在命令行使用

    如果希望具备两者功能,那么需要同时在本地和全局安装模块,常用的命令和参数如下:

    > # 根据当前文件下的 package.json 配置文件安装依赖
    > npm install 
    > npm i # 简写
    > # 本地安装模块
    > npm install moduleName
    > # 全局安装模块
    > npm install moduleName --golbal
    > npm install moduleName -g # 简写
    > # 安装模块,并将信息写入 package.json 文件中的 dependencies(生产环境依赖)
    > npm install moduleName --save
    > npm install moduleName -S # 简写
    > # 安装模块,并将信息写入 package.json 文件中的 devDependencies(开发环境依赖)
    > npm install moduleName --save-dev
    > npm install moduleName -D # 简写
    

    2、卸载模块

    可以使用 npm uninstall 命令卸载模块,常用的命令和参数如下:

    > # 删除指定模块(本地)
    > npm uninstall moduleName
    > # 删除指定模块(全局)
    > npm uninstall moduleName --global
    > npm uninstall moduleName -g # 简写
    > # 删除模块,同时删除 package.json 文件中的 dependencies 关于该模块的信息
    > npm uninstall moduleName --save
    > npm uninstall moduleName -S # 简写
    > # 删除模块,同时删除 package.json 文件中的 devDependencies 关于该模块的信息
    > npm uninstall moduleName --save-dev
    > npm uninstall moduleName -D # 简写
    

    3、查看信息

    我们可以使用 npm list 命令查看已安装的模块,常用的命令和参数如下:

    > # 查看所有已安装的模块(本地)
    > npm list
    > # 查看所有已安装的模块(全局)
    > npm list --global
    > npm list -g # 简写
    > # 指定展开的深度为零,即不展示依赖模块
    > npm list --depth 0
    > # 查看指定模块
    > npm list moduleName
    

    如果想了解更详细的信息,可以查看各模块的 package.json 文件,它位于模块目录下,用于描述模块的属性

    一些常见的属性如下:

    • name:包的名称

    • version:包的版本号

      npm 使用语义版本号,格式为 X.Y.Z,分别代表主版本号、次版本号和补丁版本号

      若修复漏洞,则更新 Z;若新增功能但向下兼容,则更新 Y;若有大变动且不向下兼容,则更新 X

    • description:包的描述

    • main:入口文件,默认是根目录下的 index.js 文件

    • dependencies:生产环境下的依赖包列表

    • devDependencies:开发环境下的依赖包列表

    • script:指定脚本命令,命令行下使用 npm run <scriptName> 即可运行

    • author:作者姓名

    • license:许可证类型

    • homepage:官网地址

    • repository:仓库信息

    4、更新模块

    可以使用 npm update 命令更新模块,常用的命令和参数如下:

    > # 更新全部模块(本地)
    > npm update
    > # 更新全部模块(全局)
    > npm update --global
    > npm update -g # 简写
    > # 更新指定模块
    > npm update moduleName
    > # 更新指定模块到指定版本
    > npm update moduleName@X.Y.Z
    > # 更新指定模块到最新版本
    > npm update moduleName@latest
    > # 更新执行模块,同时将信息记录到 package.json 文件
    > npm update moduleName --save
    

    使用 npm update 命令有两个注意的地方,第一个是 版本不能回退,第二个是 只更新到次版本号

    比如 lodash 模块有三个版本,分别是 3.9.13.10.14.17.15

    假如现在我们安装好了 3.10.1 版本的 lodash,则它既不能回退到 3.9.1,也不能更新到 4.17.15

    5、修改配置

    (0)一般格式

    > npm config --help
    # npm config set <key> <value>
    # npm config get [<key>]
    # npm config delete <key>
    # npm config list [--json]
    # npm set <key> <value>
    # npm get [<key>]
    
    # alias: c
    
    > npm config list
    # ; cli configs
    # metrics-registry = "https://registry.npmjs.org/"
    # scope = ""
    # user-agent = "npm/6.4.1 node/v10.15.3 win32 x64"
    
    # ; userconfig C:Users<username>.npmrc
    # registry = "https://registry.npmjs.org/"
    
    # ; builtin config undefined
    # prefix = "C:\Users\<username>\AppData\Roaming\npm"
    
    # ; node bin location = C:
    odejs
    ode.exe
    # ; cwd = C:Users<username>Desktop
    # ; HOME = C:Users<username>
    # ; "npm config ls -l" to show all defaults.
    

    对于 npm,有七种不同级别的配置方式,其优先级从高到低排序如下:

    • 命令行参数
    • 环境变量:以 npm_config_ 开头的环境变量被认为是 npm 配置
    • 项目 .npmrc 配置文件:位于项目根目录下
    • 用户配置:使用命令 npm config get userconfig 可查看配置文件路径
    • 全局配置:使用命令 npm config get globalconfig 可查看配置文件路径
    • 内置 .npmrc 配置文件:位于 npm 的安装目录下
    • 默认配置

    (1)设置代理

    > # 查看代理,默认为 https://registry.npmjs.org/
    > npm config get registry
    > # 修改代理
    > npm config set registry https://registry.npm.taobao.org
    

    (2)设置全局安装的默认路径

    > # 查看全局安装的默认路径,Windows 下默认为 C:Users<username>AppDataRoaming
    pm
    > npm config get prefix
    > # 修改全局安装的默认路径
    > npm config set prefix C:
    odejs
    pm
    

    (3)设置缓存路径

    > # 查看缓存路径,Windows 下默认为 C:Users<username>AppDataRoaming
    pm-cache
    > npm config get cache
    > # 修改缓存路径
    > npm config set cache C:
    odejs
    pm-cache
    

    6、npx

    (1)介绍

    最后稍微补充一下 npx,如果我们说 npm 是一个包管理器,那么 npx 就是一个包执行器,什么意思呢?

    我们知道,本地安装的包只能在项目中使用,只有全局安装的包才能在命令行使用,这样就会造成一些不便

    npx 就是为了解决这样的问题出现的,它可以在命令行中直接运行指定的模块

    (2)原理

    在默认情况下,npx 首先会在项目下的 node_modules/.bin 目录和系统环境变量 $PATH 中查找

    如果没有找到,npx 就会将该模块下载到一个临时目录,使用以后再把它删除,有两个参数可以更改这种默认行为

    • --no-install:强制使用本地模块,不去下载远程模块,若在本地没有找到模块,那么直接报错
    • --ignore-existing:强制使用远程模块,即使本地有该模块,也不使用

    (3)例子

    • 在全局未安装 create-react-app 的情况下,使用 create-react-app 创建一个脚手架
    npx create-react-app my-app
    
    • 使用特定版本的 Node 执行脚本文件
    npx node@12.18.0 test.js
    

    (4)思考

    如果我们不使用 npx,是否有办法在命令行里执行项目中安装的模块呢?答案是肯定的,只不过比较麻烦一点

    第一种方法,写完整的路径去调用,node_modules/.bin/moduleName

    第二种方法,在 package.json 文件的 script 字段中使用

    【 阅读更多 Node.js 系列文章,请看 Node.js学习笔记

    版权声明:本博客属于个人维护博客,未经博主允许不得转载其中文章。
  • 相关阅读:
    Unity StrangeIoc框架 (三)signal信号方式
    Unity StrangeIoc框架 (二)
    Unity StrangeIoc框架 (一)
    Android应用如何监听自己是否被卸载及卸载反馈功能的实现(第三版)
    2017年50道Java线程面试题
    常见Android面试题及答案(详细整理)
    Android 高级面试题及答案
    Android 面试精华题目总结
    android面试题总结加强再加强版(一)
    2017 Android 面试题 [ 基础与细节 ]
  • 原文地址:https://www.cnblogs.com/wsmrzx/p/12215930.html
Copyright © 2011-2022 走看看