博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
npm发布包教程(三):安装发布包
阅读量:7220 次
发布时间:2019-06-29

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

我们在上一篇中演示了如何发布npm包,npm仓库有了我们自己的包,接下来就进入到安装并使用我们自己的包的环节。

第一步:初始化测试工程

mkdir test-my-pkg && cd test-my-pkg npm init -y

第二步:npm官网找包

官网输入我们已经发布的包

  • yuyy-test-pkg
  • @yuyy/babel

页面会有安装命令,如下图所示:

clipboard.png

第三步:安装

依次执行下面的命令

npm i yuyy-test-pkg npm i @yuyy/babel

此时的目录结构:

test-my-pkg├── node_modules│   ├── @yuyy│   │   └── babel│   │       ├── README.md│   │       ├── index.js│   │       └── package.json│   └── yuyy-test-pkg│       ├── README.md│       ├── index.js│       └── package.json├── package-lock.json└── package.json

第四步:使用

(1) 建index.js

index.js:

let printer = require('yuyy-test-pkg');let otherPrinter = require('@yuyy/babel');printer.printMsg();otherPrinter.printMsg();

(2) 运行index.js

node index.js

执行结果:

this message is from yuyy-test-pkg!this message is from @yuyy/babel!

以上即为对我们自己的包引用的整个过程,值得注意的是:

我们知道在Node环境中是通过CommonJS的风格管理模块的,所以在第四步引用模块的时候使用的是require()。关于require()的原理,阮一峰老师的《require()源码解读》中有详细介绍,不再赘述,仅将require()的内部原理摘抄整理如下,以伪代码的形式呈现:

Node中执行:

require(X)

解析过程:

if(X 是Node内部模块){    return X}else if(X 带路径,以 ‘/‘、‘./‘、’../'开头){    resolveModule(X)}else if(X 不带路径){    /当前工程/node_modules 执行 resolveModule(X)    ./当前工程 node_modules 执行 resolveModule(X)    ../当前工程 node_modules 执行 resolveModule(X)    .    .    .}else {    return 'not found'}function resolveModule(X){    absolutePath = X的绝对路径(根据X所在的父模块可知)    if(X 是文件){        return absolutePath/X || absolutePath/X.js || absolutePath/X.json || absolutePath/X.node;    }else if(X 是目录){        return absolutePath/X/package.json(main字段) || absolutePath/X/index.js || absolutePath/X/index.json || absolutePath/X/index.node    }}

我们将在下一篇文章中演示对已经发布过的包如何进行迭代,包括内容的迭代和版本的迭代。

相关文章:

1.
2.
3.
4.
5.

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

你可能感兴趣的文章
lvs 持久连接 80 和443 端口iptables mangle
查看>>
Docker的CPU限制限制
查看>>
linux 系统下 snmp 服务配置
查看>>
作为一名网络工程师,我们应该如何定位自己的方向呢?
查看>>
脱口而出-特定情景下的美语反应
查看>>
条件控制语句
查看>>
HTTPS安全访问的原理及其应用
查看>>
笔记本wifi×××
查看>>
haproxy高可用web和mysql配置实例
查看>>
构建Maven工程(2)---MyEclipse安装maven插件
查看>>
rhel5.6 sssd配置方法。
查看>>
Zabbix篇三:windows批量安装客户端Zabbix-agent
查看>>
CentOS7使用DevStack安装Mitaka allinone
查看>>
Maven学习总结(四)——Maven核心概念
查看>>
window2003 支持flv文件设置
查看>>
除了你,其他人都挺努力的!
查看>>
DNS记录类型
查看>>
Effective C++: std::enable_shared_from_this
查看>>
linux: ln
查看>>
一天一个linux基础命令之添加用户useradd
查看>>