• 03 【npm的使用】


    03 【npm的使用】

    1.包和npm

    1.1 什么是包

    由于 Node 是一套轻内核的平台,虽然提供了一系列的内置模块,但是不足以满足开发者的需求,于是乎出现了包(package)的概念: 与核心模块类似,就是将一些预先设计好的功能或者说 API 封装到一个文件夹,提供给开发者使用。

    Node 本身并没有太多的功能性 API,所以市面上涌现出大量的第三方人员开发出来的 Package。

    1.2 包的加载机制

    Node.js中使用CommonJs模块化机制,通过npm下载的第三方包,我们在项目中引入第三方包都是:let xx = require('第三方包名'),究竟require方法加载第三方包的原理机制是什么,今天我们来探讨下。

    1. require('第三方包名')优先在加载该包的模块的同级目录node_modules中查找第三方包。
    2. 找到该第三方包中的package.json文件,并且找到里面的main属性对应的入口模块,该入口模块即为加载的第三方模块。
    3. 如果在要加载的第三方包中没有找到package.json文件或者是package.json文件中没有main属性,则默认加载第三方包中的index.js文件。
    4. 如果在加载第三方模块的文件的同级目录没有找到node_modules文件夹,或者以上所有情况都没有找到,则会向上一级父级目录下查找node_modules文件夹,查找规则如上一致。
    5. 如果一直找到该模块的磁盘根路径都没有找到,则会报错:can not find module xxx

    比如说:

    requiere(`fs`);
    
    • 1

    那加载的肯定是系统的包。所以,我们尽量不要创建一些和现有的包重名的包。

    1.3 npm 的概念

    NPM:Node Package Manager。官方链接: https://www.npmjs.com/

    Node.js 发展到现在,已经形成了一个非常庞大的生态圈。包的生态圈一旦繁荣起来,就必须有工具去来管理这些包。NPM 应运而生。

    举个例子,当我们在使用 Java 语言做开发时,需要用到 JDK 提供的内置库,以及第三方库。同样,在使用 JS 做开发时,我们可以使用 NPM 包管理器,方便地使用成熟的、优秀的第三方框架,融合到我们自己的项目中,极大地加速日常开发的构建过程。

    随着时间的发展,NPM 出现了两层概念:

    • 一层含义是 Node 的开放式模块登记和管理系统,亦可以说是一个生态圈,一个社区。
    • 另一层含义是 Node 默认的模块管理器,是一个命令行下的软件,用来安装和管理 Node 模块。

    1.4 npm 的安装(不需要单独安装)

    NPM 不需要单独安装。默认在安装 Node 的时候,会连带一起安装 NPM

    NVM、Node、NPM 安装之后,目录分布如下:

    image-20221102143348894

    image-20221102143357922

    image-20221102143410471

    输入 npm -v,查看 npm 的版本

    如果上方命令无效,可能是之前的 node 并没有完全安装成功。解决办法:https://segmentfault.com/a/1190000011114680

    另外,Node 附带的 NPM 可能不是最新版本,可以用下面的命令,更新到最新版本:

    $ npm install npm -g
    
    • 1

    1.5 配置 NPM 的全局目录

    NPM 默认安装到当前正在使用 Node 版本所在目录下。我们建议重新配置 NPM 的全局目录。

    输入npm config ls,查看

    https://blog.csdn.net/smalCat/article/details/79505441

    2.NPM 的常用命令

    查看 npm 当前版本:

    npm -v
    
    • 1

    更新 npm:

    npm install npm@latest -g
    
    • 1

    项目初始化:(执行完成后,会生成package.json文件)

    npm init
    
    # 快速跳过问答式界面,选择默认配置
    npm init 
    • 1
    • 2
    • 3
  • 相关阅读:
    【C++】继承 ⑦ ( 继承中的对象模型分析 | 继承中的构造函数和析构函数 )
    mysql查询导出binlog文件命令
    【Linux操作系统】crontab设置自动运行脚本
    Spring Security
    CSS 和 HTML 的结合方式/css选择器
    【图解大数据技术】流式计算:Spark Streaming、Flink
    docker删除镜像命令
    此博客不在使用通知
    设计模式学习(三):工厂模式
    前端的ajax你知多少?ajax完全指南奉上
  • 原文地址:https://blog.csdn.net/DSelegent/article/details/127819415