前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >教你从零写一个nodejs包,然后发布至npm源上

教你从零写一个nodejs包,然后发布至npm源上

作者头像
用户1462769
发布2019-08-12 19:48:48
2.7K0
发布2019-08-12 19:48:48
举报
文章被收录于专栏:全栈者全栈者

随着前端技术发展,现在的前端体系基本离不开nodejs来构建,而nodejs强大的背后,肯定是离不开其开放生态下所诞生的开源库和包,今天主要谈谈这些开源库包的一些知识。

一. node包分析

每一门后台语言都有一些库,这些库一类是封装计算机底层的一些功能接口,以语言自己本身的标准暴露给开发者,在nodejs中有http,TCP等一些自带模块属于此类;也有一部分库是把某种用途以最佳实践的方式进行封装,然后提供给开发者使用,像常用的moment,eslint等属于此类库。

在nodejs中,要使用它的包则需要通过一个叫npm的命令去安装它,npm的全称叫node package manage,释义为nodejs的包管理工具。当你要安装某个包时,使用如下格式即可。

代码语言:javascript
复制
npm i 包名  

由于npm默认去国外的镜像上拉资源,速度很慢,如果你在国内可以使用cnpm,或者在~/目录下新加.npmrc文件,将国内的镜像地址写入。

代码语言:javascript
复制
npm i -g cnpm
cnpm i 包名

接下来看一下这些被安装的包是如何被加载和使用的。

可以看到,npm i的实质则是下载文件,将目标资源下载到了一个叫node_modules的文件夹下,通常对于在本地的文件,按照正常的文件加载方式,应该是下面这种方式。

代码语言:javascript
复制
const moment = require('./node_modules/moment');

但是我们并不会使用这种方式去加载node_modules中的包,而是通过下面的这种方式。

代码语言:javascript
复制
const moment = require('moment');

全局函数require内部做了处理,简化了我们手写路径的痛苦,当传入一个非路径类的字符串时,便会按照目录层级向上的每一层的node_modules中找对应的文件或者文件夹。

通过上面node包的安装过程分析,可以看出来npm安装包的实质则是下载文件进本地的node_modules文件夹下,而且要有一个入口文件来暴露出我们所要提供的方法,当我们要写一个自己的nodejs的包的时候,也需要按这个标准来完成。

二. 写一个自己的node包

1. 功能实现

首先最重要的一步确定自己的包叫什么名字,为了演示我这里的包名叫my_module_for_test,其次确定要实现的功能,实质即封装一个要实现某功能的函数,这里简单实现一个打印参数功能的函数。

代码语言:javascript
复制
// my_module/index.js
function print(name) {
  console.log('you enter name is :%s', name);
};
module.exports = print;

在当前目录下新建一个node_modules的文件夹,在新建一个my_module文件夹作为自己的包空间,然后把自己实现的方法放在包空间下的index.js文件里,这时候初始版本的node包便完成了。

2. 发布至NPM源

要完成自己的一个node包,不单单要实现包的功能,还要能够安装,安装的实质在上面提到了,即下载文件,但是下载的前提是要将你的包资源放到远端的镜像下,然后使用中去下载安装至当前目录node_modules文件夹下。

发布一个node包需要进行以下步骤:

1. 注册NPM账号

进入www.npm.js下进行注册自己的账号。

2. npm 登录自己的账户

代码语言:javascript
复制
npm login

3. 在已经完成的my_module文件夹下初始化package.json,初始化完成后,在该文件夹下有package.json文件和index.js两个文件。

代码语言:javascript
复制
npm init //填入包信息

4. 发布包至npm源

代码语言:javascript
复制
npm publish

通过以上四步,你写的node包就成功被发布到了npm源上,所有人都可以通过npm install来使用你的包了。

5. 使用npm install 安装使用

代码语言:javascript
复制
npm install --save my_module_for_test

用上面命令进行安装后,可以在本地node_modules下查看你的包即刚刚上传的包,写一个index.js进行测试。

代码语言:javascript
复制
const print = require('my_module_for_test');
print('welcome you, 请关注公众号:fullStackEngineer');

6. 删除包

当你的包不再使用且不在维护的时候可以使用下面命令删除它。

代码语言:javascript
复制
npm unpublish my_module_for_test --force 

以上便是一个完整的node的包发布至npm源的过程。

如上内容均为自己总结,难免会有错误或者认识偏差,如有问题,希望大家留言指正,以免误人。若有什么问题请留言,会尽力回答之。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-07-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 全栈者 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档