• 学习笔记—Node中第三方模块


    日常的学习笔记,包括 ES6、Promise、Node.js、Webpack、http 原理、Vue全家桶,后续可能还会继续更新 Typescript、Vue3 和 常见的面试题 等等。


    第三方模块

    第三方模块的引用也是 没有绝对路径 的。

    let r = require('co');
    console.log(r);
    

    第三方模块的 引用形式主要分为两种

    • 全局模块,直接安装到电脑的npm目录下

    • 内置的第三方模块,默认会沿着 当前目录向上查找 node_modules 下的同名文件夹,先根据 package.json 中的 main 设定的文件查找。如不存在,再到 index.js 中查找。如果自己的目录下未找到 node_modules,则会向上查找。(可以通过打印 module.paths 进行路径查找)

      假设我们在当前目录下,新建一个 node_modules ,在里面自定义一个文件夹名为 co,文件夹内包含一个 index.js 文件。文件里面写上内容 module.exports = "hello"

      这时我们再重新打印,发现上面的结果变成了 hello

      原因就是因为 第三方模块的查找规则

    npm

    参考文献 npm Docs / npm

    作为前端工程师,应该对npm并不陌生。( 现在不建议使用 cnpm ,无法锁定版本,可能会出现很多奇怪的问题。目前推荐使用 nrmyarn

    这里我们介绍一下 ” 3n模块

    • npm 全称 node package manager ,是nodejs的包管理器 ,用于node插件管理,包括安装、卸载、管理依赖等。
    • nrm 全称 node registry manager ,是npm的镜像源管理工具,有时候国外资源太慢,使用这个就可以快速地在 npm 源间切换。(例:nrm use taobaonrm use cnpm 等...)
    • nvm 全称 node version manager ,是一个nodejs的版本管理工具,通过它可以安装和切换不同版本的 node 和 npm。

    使用npm安装的模块就是 全局模块,这种模块无法被 require 引用,只能通过命令行使用

    npm root -g

    我们之所以可以在 cmd控制台 直接访问npm或node,是因为在环境变量的Path属性上进行了配置。

    而我们通过 npm安装的 全局模块 ,会 在npm目录下生成一个快捷方式 ,所以我们可以通过命令行使用全局模块。

    配置命令行命令

    假设我们现在有一个需要在命令行中输出的文件。

    // ./bin/www
    console.log('a')
    

    我们该如何进行配置呢?

    首先通过命令行 npm init -y 生成默认的配置文件。

    package.json

    在文件中添加属性 bin ,并在 bin 中添加相应的文件路径。(我们也可以自定义一个命令,进行简便操作)

    package.json

    我们将配置文件配置好后,需要放置到全局环境下。 这时有两种方式可以进行操作:

    • 发布到全局模块环境,并进行发布。
    • 使用 npm link ,将我们当前文件link到 node_module 文件夹下。(当前推荐使用这种,方便调试)

    这时我们可以看到,当前自定义命令 "gm" 已经映射到了我们当前的文件目录。

    // 控制台打印
    C:\Users\XXX\AppData\Roaming\npm\gm -> C:\Users\XXX\AppData\Roaming\npm\node_modules\global-modules\bin\www
    C:\Users\XXX\AppData\Roaming\npm\node_modules\global-modules -> D:\xxxx\xxxx\xxxx\xxx\xxx\global-modules
    

    但是我们现在还无法直接使用 "gm" 命令,我们还需要配置一个运行方式。

    在我们之前创建好的文件最开头,输入 #! /usr/bin/env node

    #! /usr/bin/env node
    console.log('a')
    

    这行代码的意思就是告诉我们的命令行,当前文件是用当前环境变量里面node运行的。

    修改了运行方式,我们需要重新运行 npm link --force--force 覆盖之前的配置文件)

    这样我们就可以在命令行中输出我们配置文件中的内容了。

    控制台输出

    我们可以通过这种方式,实现一些自定义的全局包,就可以采用这种方式进行配置。

    总结一下

    1. 先生成默认的配置文件。
    2. 配置 bin 命令。
    3. 在指定文件下添加执行方式 #! /usr/bin/env node
    4. 将此包放到npm下,可以发布到全局环境,也可以使用 npm link 进行临时调试。

    本篇文章由莫小尚创作,文章中如有任何问题和纰漏,欢迎您的指正与交流。
    您也可以关注我的 个人站点博客园掘金,我会在文章产出后同步上传到这些平台上。
    最后感谢您的支持!

  • 相关阅读:
    自己定义Actionbar
    创建自己的Repo Server
    AI案例
    贝叶斯定理,从白袜到飞机失事再到人工智能
    jupyter notebook 安装代码提示功能
    Jupyter notebook 自动补全
    27 个Jupyter Notebook的小提示与技巧
    Windows下的Jupyter Notebook 安装与自定义启动
    以太坊联盟链 parity 节点搭建
    ubuntu上面Parity 安装
  • 原文地址:https://www.cnblogs.com/moxiaoshang/p/15596530.html
Copyright © 2020-2023  润新知