• npm:发布/迭代个人开发包到世界仓库


     目录

    package包:发布/更新流程

     注意点:

    1.报错:初次执行npm publish命令报错

     2.报错:执行npm addser登录初次登录时报错

     3.报错:完成账户登录,npm publish发布时再次报错


            npm是JavaScript运行时环境的默认包包管理器,全称是Node Package Manager,是一个NodeJS包管理和分发工具,已经成为了非官方的发布Node模块(包)的标准。

            在实际开发中,我们使用到的依赖库大多是第三方提供的,如果我们想要以作者的身份开发属于自己的开发包,并将其发布到世界仓库。

    package包:发布/更新流程

            ①我们需要在npm官网注册属于自己的账户,只需要提供用户名、密码、邮箱号即可,

             ②本地准备好一个package 包,流程为:

    # 创建一个用于放置package 包的文件夹

    mkdir dirname

    # 切换到目标文件夹

    cd dirname

    # 初始化

    npm init

             然后创建入口文件,默认为index.js,并编写实际的代码片段,使用modules.export命令将其导出即可,

    1. {
    2. "name": "npm-package-xtest",
    3. "version": "1.0.0",
    4. "description": "a test npm package",
    5. "main": "index.js",
    6. "scripts": {
    7. "test": "echo \"Error: no test specified\" && exit 1"
    8. },
    9. "author": "xwd",
    10. "license": "ISC"
    11. }
    1. modules.export = {
    2. dateTimeFormatter:function(dateStr){
    3. const date = new Date(dateStr);
    4. return `${date.getFullYear()}-${date.getMonth()+1}-${date.getDate()} ${date.getHours()}:${date.getMinutes()}:${date.getSeconds()}`;
    5. }
    6. }

            ③使用npm public命令,发布创建好的个人package包。

              如果显示如下内容,即为发布成功。 

            ④测试发布好的个人package包。

    # 创建一个测试文件夹

    mkdir test_folder

    # 切换到测试文件夹

    mkdir test_folder

    # 初始化

    npm init

    # 安装个人发布的package包

    npm install npm-package-xtest

            如下所示,即为安装成功,

    package.json文件

             ⑤使用package包。

    1. const xtest = require("npm-package-xtest");
    2. console.log(xtest);

            看到如下信息,提示报错,是我们自定义的包有问题。

             ⑥修复package包与包的升级

            上述报错,提示的个人的package包存在语法错误,那么我们如何修复呢?

            首先找到自己的包,修复语法错误,为如下这一版内容,

    1. module.exports = {
    2. dateTimeFormatter:function(dateStr){
    3. const date = new Date(dateStr);
    4. return `${date.getFullYear()}-${date.getMonth()+1}-${date.getDate()} ${date.getHours()}:${date.getMinutes()}:${date.getSeconds()}`;
    5. }
    6. }

            然后使用命令行,执行命令:npm version patch,使其版本号自增(注意:不要手动修改package.json文件中的version版本号),可以看到,版本号已经变为v1.0.1了。

             接下来,继续使用命令:npm publish,更新仓库中的包,

                     如下为在npm官网搜索结果中,显示的package包的详细内容,

             ⑦项目依赖:package的升级

                    接下来,我们在测试项目中升级npm-package-xtest依赖的版本, 如下图,当前为v1.0.0有缺陷的版本,

                     执行命令,查看当前依赖npm-package-xtest的所有版本信息,

                     继续使用命令:npm update npm-package-xtest,将其更新到最新的1.0.1版本,

             ⑧重新测试,执行node main.js,运行脚本文件,正常执行,

    1. const xtest = require("npm-package-xtest");
    2. console.log(xtest);//打印模块
    3. //测试代码
    4. const date = new Date();
    5. const dateFormatterStr = xtest.dateTimeFormatter(date.toISOString());
    6. console.log(dateFormatterStr);

     注意点:

    1.报错:初次执行npm publish命令报错

            报错原因:未登录个人npm账户,执行命令:npm addser,按照提示信息完成登录即可。

     2.报错:执行npm addser登录初次登录时报错

            报错原因:可设置了npm的淘宝镜像,需要执行命令如下命令,切换到原始仓库。再次登录即可。

    npm config set registry https://registry.npmjs.org/


     3.报错:完成账户登录,npm publish发布时再次报错

             报错原因:package的包名x-test重复,可以在npm官网搜索,显示相同的包名已经被使用过了,换一个未被使用过的package包名即可。

    4.执行npm update但是package.json未更新

            部分小伙伴可能会发现,上面,我们在测试项目中使用npm update npm-package-xtest命令更新依赖包时,package-lock.json文件中npm-package-xtest的版本号已经更新(实际上:此时再使用require命令导入npm-package-xtest依赖时,调用的就是最新版本的代码),package.json文件中dependencies中包含的npm-package-xtest子项版本仍然是v1.0.0,没有得到更新,那么,如何解决这个问题呢?

            可以执行命令如下,用于更新dependencies中所声明的依赖项版本号。

    npm update -S npm-package-xtest

            PS:想要更新package.json文件中声明的的版本号,可以继续了解如下内容,

            "dependencies"表示开发和上线都需要的第三方包,用-S

            "devdependencies"表示仅在开发阶段需要的第三方包,用-D

            因此,在安装或者更新时,可根据实际需要添加-S -D前缀,来将信息写入/更新到指定的dependencies或者devdependencies节点下。

  • 相关阅读:
    Anomalib 图像异常检测算法
    [.NET项目实战] Elsa开源工作流组件应用(一): Elsa工作流简介
    零知识证明:具有DDH假设的 ZKP
    Linux学习-Linux系统及编程基础笔记
    【活动回顾】ABeam News | 庆祝ABeam德硕与毕博中国战略合作十周年,关系再升级
    大模型在百度智能问答、搜索中的应用
    在线编码、格式转换
    PHP 选课管理系统mysql数据库web结构apache计算机软件工程网页wamp
    NoveAI本地环境搭建、AI作画
    智慧物流之道:数据可视化引领全局监控
  • 原文地址:https://blog.csdn.net/weixin_43524214/article/details/128052950