专栏首页前端社区npm 模块的制作

npm 模块的制作

一、简述

npm 是Node的包管理器,不管是前端后端,我们都可以使用上面已经发布的模块。

npm install module-name

运行上面的命令,npm 将从repository中提取模块到“node_modules” 文件夹中,前端如果是使用webpack构建项目的话,我们就可以使用es6 import直接导入模块使用,如下:

import Mymodule from 'module-name'

npm让我们非常方便的使用别人发布的模块,但作为一名开发者,我们又是如何制作npm 模块,发布给别人使用呢,

接下来我一步一步的讲解。

二、步骤

在github上创建一个新的repository,然后clone到本地

创建 package.json 文件来描述我们要制作的模块

创建和测试模块

发布模块到NPM

开始创建模块

这里假设你已经会使用github创建repository和clone到本地了。cd module-name进入根目录,运行命令:

npm init

这将引导并提示你一步步创建package.json文件,你可以不断按回车键选择默认值。

创建和测试我们的模块

package.json中main字段已指定index.js为模块入口文件,import 某个模块时实际上是查找到主入口文件,然后导进来。我们可以在index.js编写我们的模块逻辑,下面就以一个计算两点间距离的功能模块来讲解

index.js:

exports.dist = function(p1, p2){ return Math.sqrt(Math.pow(p2.x - p1.x, 2) + Math.pow(p2.y - p1.y, 2)); };

接下来我们编写一个测试用例来测试下

tests/test.js

var myMod = require('./../index.js'); var p1 = {x:1, y:1}; var p2 = {x:4, y:5}; var dist1 = myMod.dist(p1, p2); console.log("Distance between: ", p1, " and ", p2, " is:", dist1);

把package.json中scripts字段中test改成

“scripts”: {
“test”: “node tests/test.js”
},

运行命令

npm test

我们可以看到以下结果

发布module到NPM

现在我们的模块完成了,但要发布到NPM,登记成功才算完成。发布模块到npm需要注册一个npm账户,可以使用

npm adduser 命令添加一个账户,使用npm login在客户端登录存储凭证。password因为是shell操作,键入的时候不会出现**,正常现象,不用管,输入完毕不要忘记就行。

接下来可以使用

npm publish

发布到NPM了。

最后,我们就可以使用

npm install module-name

安装制作好的npm模块。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Mac全栈开发-NodeJS

    建议使用 NVM 对Node进行管理,在安装Node之前可以先安装好NVM,下面几种安装方式任选其一即可。

    用户1065635
  • nodejs与nginx的完美搭配

    node自己本身可以作为服务器进行驱动,但是node本身对文件的处理能力并不是很好,所以当我们的生产环境中应尽量使用nginx来处理静态的资源以及反向代理,同时...

    用户1065635
  • Node.js 应用:Koa2 之文件上传下载

    上传下载在 web 应用中还是比较常见的,无论是图片还是其他文件等。在 Koa 中,有很多中间件可以帮助我们快速的实现功能。

    用户1065635
  • SCSS的特点

    使用scss时候在所在的style样式标签上添加lang=”scss”即可应用对应的语法,否则报错

    wust小吴
  • npm install速度太慢

    华创信息技术
  • npm nodejs 经典安装问题

    自从转开发后,碰到了很多以前没有遇到过的问题,搜索出来的文章因为思维方式和关键字的转变,对应的搜索结果也和以前大不一样,我也发现自己以前对很多技术的理解被国内的...

    运维部落
  • 串拷贝(strcpy)和内存拷贝(memcpy)

    strcpy()函数只能拷贝字符串。strcpy()函数将源字符串的每个字节拷贝到目录字符串中,当遇到字符串末尾的null 字符(\0)时,它会删去该字符,并结...

    morixinguan
  • 让你上瘾的网易云音乐推荐算法,用Word2vec就可以实现

    大数据文摘
  • Kafka与Redis比较

    转一篇比较Kafa与Redis的文章,从日志聚合分析了二者的性能。 《Kafka vs. Redis: Log Aggregation Capabilit...

    SeanCheney
  • Stealth Falcon黑客组织无文件后门分析

    Stealth Falcon黑客组织,自2012年以来一直活跃,其主要目标是中东的政治活动家和记者。citizen lab机构在2016年发表了一份针对某一网络...

    FB客服

扫码关注云+社区

领取腾讯云代金券