zoukankan      html  css  js  c++  java
  • 学习 NPM 最基础的指令

    什么是 NPM

    npm的核心是一个软件注册表(software registry)。

    registry /ˈredʒɪstri/ n. 注册表;登记处;挂号处。注册表就像是信息登记表或者数据库。

    npm, node package manager, node 包管理器,它是 node 的默认包管理器,node.js 是一个 JavaScript的运行环境,也称作 node。

    • 软件包(package),是一个模块的集合,将所有的模块和目录结构一起打包成一个称之为“包”(package)的文件,类似于.zip或者类似于.exe。node 规定了软件包里有一个包描述文件 package.json
    • package.json 是包描述文件,用于描述包的基本信息、相关依赖、执行脚本等。这是一个 json 格式文件,位于包的根目录下。 npm 基于这些规范来管理包与模块之间的依赖关系。

    npm 有3部分:

    • 注册表(registry):注册表是 npm 的核心,所有 node 软件包的信息都登记在这个大型“数据库”里,它是界上最大的 node 软件注册表,来自全球的开源开发人员使用 npm 共享和借用软件包。
    • 命令行界面(CLI - Command Line Interface):npm-cli 提供了与 npm 交互的方式,如:发布(到npm)、(从npm)安装、管理依赖包等操作。我们要学习的就是它。
    • 网站(website):npm 还提供了一个网站,为用户提供可视化的操作,提升用户管理 npm 的体验。

    npm 工具是由 Isaac Z. Schlueter 单独创建,作为 Node 的包管理器。在 node v0.6.3版本之后,npm作为node的默认管理器,变成了 node 安装包的一部分,安装node 就自动安装了 npm 工具。

    大多数人仅仅只要通过 npm 下载、管理、卸载软件包,所以大部分人学习 npm 就是学习这个 npm-cli 的指令,并且大部分人只要学习一些常用命令就够用了。

    https://docs.npmjs.com/about-npm/

    使用 npm(npm-CLI)

    如果要发布、管理软件包,需要在网站上注册账户,然后通过网站来管理、发布。但一般用户不需要这些操作,一般用户就是用 npm-CLI来安装第三方软件包,如 jQueryvue等,所以只要学会使用 npm-CLI几个最常用的命令就可以了。

    搜索包(package)

    绝大部分开发者是使用别人的包,比如下载和使用jQuery,要搜索自己需要的包最简单体验最好的方式,就要从 npm 网站搜索 搜索栏开始

    安装 npm-CLI

    安装 Node.js 的时候会自动将 npm 也安装在本地,并且 npm 就是 Node.js 的包管理工具(node package manager 的缩写)。ref

    所以,安装Node.js默认就会安装npm,安装npm最简单的方式就是安装node。ref

    安装完成之后,输入如下命令,如果能看到版本号,则安装完成。

    $ npm -v
    $ npm -version
    6.12.1
    

    node.js 默认安装路径是:C:Program Files odejs

    在 nodejs 的目录下,有一个 node_modules 文件夹,里面存放是全局 npm 包

    CLI 常用的命令

    CLI documentation

    初始化包描述文件 - init

    $ npm init -y
    

    配置文件就是 package.json

    使用 init 命令就会在当前目录下创建一个 package.json 文件,-y 参数是创建一个默认文件,如果不使用这个参数,则需要手动填写配置,否则都是用默认配置,默认配置如下。

    {
      "name": "npm",
      "version": "1.0.0",
      "description": "",
      "main": "index.js",
      "scripts": {
        "test": "echo "Error: no test specified" && exit 1"
      },
      "keywords": [],
      "author": "",
      "license": "ISC"
    }
    

    新的项目一定要先 init 再做其他操作,否则在安装包的时候,会自动往父级目录查找这个配置文件。

    安装一个包 - install

    install 命令将会安装软件包,以及该软件包依赖的所有软件包也会被安装。下面是4种常用的写法:

    • 本地安装 package.json 列为依赖项的所有包
    • 本地安装一个包,默认是:本地安装,安装最新版本
    • 本地安装一个包,指定版本号
    • 全局安装一个包,全局安装
    $ npm install
    $ npm install <package_name>
    $ npm install <package_name>@<version>
    $ npm install <package_name> -g
    

    npm install <package_name>

    使用 npm install <package_name> 命令,可以本地安装一个软件包,比如安装一个 jQuery 包:

    $ npm install jquery
    

    也可以一次安装多个安装包:

    $ npm install jquery bootstrap
    

    npm 执行 install 命令会有2个重要的步骤:

    • 修改 package.jsondependencies 属性,加入软件包信息。
    • 安装软件包到 package.json 同一层目录下 node_modules 文件夹内。
    dependencies 属性

    dependencies /dɪ'pɛndənsi/ n. 依赖关系

    npm 执行 install 命令首先查找 package.json 文件,从当前路径开始查找,一层一层往上,直到根目录,如果没有找到则在当前路径夹创建一个。

    找到 package.json 文件之后,会修改 package.jsondependencies 属性,新增一个依赖包信息到该属性。。package.json 中的 dependencies 属性用于描述依赖包的信息。

    $ npm install jquery bootstrap
    

    执行完上面的命令之后,再查看 package.json 文件,多了bootstrap 和 jQuery 两条依赖项:

    // package.json 文件的 dependencies 属性
    {
      //...
      "dependencies": {
        "bootstrap": "^4.4.1",
        "jquery": "^3.4.1"
      }
    }
    
    node_modules 目录

    软件包会被安装在 package.json 同层目录的 node_modules 目录。

    >
          node_modules
              bootstrap
              jQuery
          package.json
          package-lock.json
    

    npm install (no args)

    如果已经有 package.json 文件,则直接执行 install 命令,会自动把 package.json 文件中的所有依赖项都安装到 node_modules 目录。

    $ npm install
    

    所以上传代码到服务器的时候,只要上传 package.json 文件即可,不需要上传node_modules 目录。从服务器下载代码之后,只要执行 install 指令就可全部安装。

    npm install <name>@<version>

    可以通过 @ 符号指定要安装的版本号:

    • 指定小版本号则安全安装指定版本号
    • 只指定大版本号,则安装大版本号下最新的版本
    • 已安装的包要改版本,直接 install 就可以,不需要卸载
    $ npm install jquery@3.1.1
    $ npm ls jquery
    `-- jquery@3.1.1
    

    $ npm install jquery@3
    $ npm ls jquery
    `-- jquery@3.4.1

    全局安装包 -g

    install 有 2 种方式安装 npm 包:本地安装和全局安装

    • 本地安装:安装在当前目录下,别的目录访问不到。 npm install 命令的默认行为。
    • 全局安装:安装在 node.js 的安装目录下,npm 在任何目录下都能访问这个包。使用参数 -g
    $ npm install webpack -g
    

    全局安装具体安装到哪个目录下可以看输出信息,我是安装在 C:Userslucio{user}Roaming pm ode_modules 目录下。

    检测

    安装完成后如下方式可以检测是否安装成功:

    • 查看 npm 的输出信息

    • node_modules 的文件夹下查看是否有软件包。

    • 查看 package.json 文件的 dependencies 的属性是否已有软件包的信息。

      {
        "dependencies": {
          "bootstrap": "^4.4.1",
          "jquery": "^3.4.1"
        }
      }
      

    devDependencies

    package.jsondependencies 是一个很重要的属性,表示依赖关系。它的作用是你或者别人使用别人的包的时候,可以通过 npm install 命令一键安装所有依赖。

    有一些包在终端也被依赖,如 jQuerybootstrap 等。而有一些包是开发时候才需要的,终端用户并不需要,比如代码压缩、代码转换等。

    npm install 指令后面输入配置 -D ,就可以配置到devDependencies 属性下。这是一个约定,只在开发过程中使用到的依赖包则使用 -D 配置到 devDependencies 属性下。

    例如 VueBootstrap 都是浏览器也需要的,而转换 Vue 模板的工具 vue-loadervue-template-compiler 只有开发时候才需要。注意 -D 必须大写。

    $ npm install vue bootstrap
    $ npm i vue-loader vue-template-compiler -D
    
    // 这是 package.json
    { 
      "dependencies": {
        "bootstrap": "^4.4.1",
        "vue": "^2.6.11"
      },
      "devDependencies": {
        "vue-loader": "^15.9.0",
        "vue-template-compiler": "^2.6.11"
      }
    }
    

    这些包(包括它们的依赖包)都被安装到 node_modules 目录下,不同的是,-D 依赖包被保存到了 devDependencies 属性下。

    使用已安装的包

    要根据情况,ES6和Node采用不同的规范

    • require
    • include

    更新包 - update

    $ npm update <package_name> [-g]
    

    卸载 package - uninstall

    $ npm uninstall <package_name> [-g]
    

    列出包 - ls

    $ npm ls
    $ npm ls <package_name>
    $ npm ls -g
    

    帮助 - help

    $ npm help
    $ npm help <package_name>
    

    管理配置 - config

    npm config 命令要配合子命令一起使用。

    $ npm config list
    $ npm config get <key>
    $ npm config get metrics-registry
    $ npm config set <key>
    $ npm config set registry http://registry.npm.taobao.org/
    $ npm config set registry https://registry.npmjs.org/
    

    alias

    指令还有别名,比如 install,也可以使用 iadd,如下3条命令都是 install 操作:

    $ npm install jquery
    $ npm i jquery
    $ npm add jquery
    

    install i add

    uninstall remove rm r un unlink

    update up upgrade

    ls list la ll


    npm-cli文档:https://docs.npmjs.com/cli-documentation/

  • 相关阅读:
    py2与py3的字符编码的区别
    深浅拷贝大法
    列表、字典、元组、集合的内置方法
    数据类型的内置方法
    与while和for的爱恨情仇
    三种格式化输出以及运算符和if
    在outlook中发邮件判断邮件发送成功的方法
    修練營ASP.NET]淺談多層式架構 (Multi Tiers)
    软考编译原理小结
    0型文法、1型文法、2型文法、3型文法
  • 原文地址:https://www.cnblogs.com/luciolu/p/12317611.html
Copyright © 2011-2022 走看看