前言
在前端,基于NodeJs的工程化开发已经是一个很成熟的解决方案,而工程化的构建又离不开诸多便捷又高效的可复用的NPM包,那么这些包是如何制作、发布的呢?今天我们就来研究一下这个问题。
什么是NPM?
NPM 是 NODE 的模块管理器,它包括安装、卸载、更新、查看、发布等功能,是前端工程化能够获得巨大成功的重要原因之一,关于NPM相关的知识,本文就不赘述了,有兴趣的读者可以前往官网学习相关的资料。 官方网站: https://www.npmjs.cn/初始化开发环境
node模块就是发布到npm的代码包,我们通常使用 npm 自带的命令初始化 node 模块的环境。 初始化的过程中会提示输入模块的相关信息,其中比较重要的是名字和版本号,模块名字是其他人安装时候的唯一ID标识,而版本号则是 node 模块的版本控制编号。 完成初始化后,会在本机生成一个 package.json 文件,它是管理模块的信息集合: 还需要在package.json 同目录下创建一个 index.js,在这个文件中暴露出这个 node 模块的对外接口: 到这里,一个最简单 node 模块就已经开发完成了。命令行命令定义
我们创建一个node 模块后,如果只是通过 main 暴露 node 模块的接口,那么其他人就只能使用模块引用的方式来使用,但是在一些情况下,我们不想做二次开发,而是希望直接通过命令行的方式来使用 node 模块的内容,比如说各种脚手架、SCSS编译等等。 好在 node模块提供了一种命令行定义的方法,bin 字段: 在package.json 的 bin 字段中,我们定义安装后可由命令行执行的命令,其中,key 值是命令的名称,是我们在命令行中调用的命令ID,value 值是在执行命令后执行的 js 地址,它等同于直接用 node 运行该 js: 我们来看下 ./bin/trace.bin.js文件里面的内容: 它和index.js 中的内容没有区别,只是两种不一样的路子,命令行其实是对 index.js 内容的封装,index.js 是对外暴露的接口。调试
我们完成模块开发后,怎么才能知道我们的包是否按照指定的规则正常运行了?同时怎么调试相关的代码? 方法其实有不少,我就列三种: 1.直接用相对路径按照使用: 2.发布临时的本地测试包: 3. 发布一个正式现网的 beta 包: 这条我就列着,反正我不用!(方法同正式包发布,只是版本号区分)添加 README.md
readme 文件还是需要的,它主要用于该项目模块的说明、使用方法等,在此我们不做深究,大家可以参考 markdown 的一些语法。 markdown官网: https://markdown-zh.readthedocs.io/en/latest/发布
我们的node 模块开发完成后,需要发布到线上才能够让其他人使用,使用 npm 发布其实很简单,步骤如下: 1.到https://www.npmjs.com 上注册一个账号; 2.在命令行中输入添加用户命令,根据提示,输入相关的用户名、密码、邮箱: 3.最后在项目文件夹中输入发布命令(package.json同目录): 到这一步就完成发布了,其他人可以通过 npm 安装这个 node 模块,使用index.js 中暴露的方法了:调用模块暴露的接口
直接使用命令行调用