npm 包发布

1. npm与包

包: node.js中的第三方模块

1.1 包的基本使用

下载包: npm i [package name]

初次装包完成后,在项目文件夹下多一个叫做node_modules文件夹和package-lock.json配置文件

  • node_modules文件夹: 用来存放所有已安装到项目的包。require()导入第三方包时,从这个目录查找并加载。

  • package-lock.json配置文件: 用来记录node_modules目录下的每一个包下载信息,如包的名字、版本号、下载地址等。

包的语义化版本规范:包的版本号,总共三位数字,如2.24.0

  • 第一位数字:大版本

  • 第二位数字:功能版本

  • 第三位数字:bug修复版本

前面的版本号增长了,则后面的版本号归零

1.2 包管理配置文件

项目根目录中,必须提供叫做package.json的包管理配置文件。用来记录与项目有关的一些配置信息,如:

  • 项目名称、版本号、描述等

  • 项目中用到哪些包

  • 哪些包只在开发期间用到

  • 哪些包在开发和部署时都需要用到

使用npm init -y快速新建package.json文件

devDependencies:在项目开发阶段使用,在项目上线后不会用到,下载时使用-d--save-dev后缀

1.3 npm下包镜像源

下包的服务器地址

// 查看当前下包镜像源
npm config get registry

// 将下包的镜像源切换为淘宝镜像源
npm config set registry=https://registry.npm.taobao.org/

i5ting_toc: 将md转html的npm包

npm i -g i5ting_toc

i5ting_toc -f 要转换的md文件路径 -o

6.4 开发属于自己的包

  1. 新建文件夹,作为包的根目录

  2. 在文件夹中,新建如下三个文件:

    • package.json:包管理配置文件

    • index.js: 包入口文件

    • README.md: 包说明文档

  3. 初始化package.json

{
     "name":"", // 包名称,不能重复
     "version":"",  // 版本号
     "main":"",  // 包入口文件
     "description":"",  // 包描述信息
     "keywords":[""],  // 包搜索关键字
     "license":"ISC"  // 开源许可协议
    }
  1. 发布包

    1)注册npm账号

    2)登录npm账号:在终端执行npm login命令,依次输入用户名、密码、邮箱。

    注:必须在官方下载路径上;查看当前包下载路径nrm ls,切换到官方下载路径nrm use npm

    3)在包根目录运行npm publish命令,即可将包发布到npm上

    4)删除已发布包:运行npm unpublish [包名] --force命令,只能删除72小时内发布的包,且删除后在24小时内不允许重复发布

  2. 模块加载机制

    自定义模块:使用require()加载自定义模块时,必须指定以./../开头的路径标识符,如果未指定,node会把它当做内置模块或第三方模块进行加载

    如果使用require()导入自定义模块时,省略了模块扩展名,则node.js会按顺序尝试加载以下文件:

    1) 按照确切的文件名进行加载

    2)补全.js扩展名进行加载

    3)补全.json扩展名进行加载

    4)补全.node扩展名加载

    5)加载失败

    第三方模块:传递给require()模块标识符的不是一个内置模块,尝试从/node_modules文件夹加载第三方模块,如果没有找到对应第三方模块,则移动到上一层父目录中node_module中进行加载,直到系统的根目录

    目录作为模块:

    1)在被加载目录下查找一个叫做package.json的文件,并寻找main属性,作为require()加载的入口

    2)如果目录中没有pakage.json文件,或main入口不存在无法解析,则Node.js会试图加载目录下的index.js文件

    3)报错

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容