• 如何开发一个npm包并发布到npm中央仓库


    转自: https://liaolongdong.com/2019/01/24/publish-public-npm.html

    如何开发一个npm包并发布到npm中央仓库
    需求背景:平时在项目工作中可能会用到很多通用性的代码,比如,框架类、工具类以及公用的业务逻辑代码等等,通过打包发布到npm中央仓库或者私有仓库,来进行维护和托管代码,方便公用代码的使用,如果涉及到不方便公开的代码组件可以发布到私有仓库。

    npm包命名规则及文件夹结构
    用模块的名称命名根目录,npm包名不能重复

    每个npm包根目录下都包含一个index.js文件和package.json文件

    src目录,用于放置未压缩的源码

    dist目录,用于放置压缩后的代码

    使用package.json文件的规格来描述本模块

    发布npm到npm中央仓库(公共仓库)
    1、注册npm账号
    我们在发布npm包之前,要去npm官网注册一个账号,注册完账号以后,点击邮件链接完成验证

    2、编写模块
    首相,创建publishNpm文件夹,在该文件夹下添加helloworld.js文件和index.js文件,代码如下:

    // 创建模块目录
    mkdir publishNpm
    
    // 进入目录
    cd publishNpm
    
    // 创建helloworld.js文件和index.js文件
    touch helloworld.js index.js
    // helloworld.js文件
    
    function helloworld (name) {
    console.log('hello world,', name);
    }
    exports.helloworld = helloworld;
    // index.js文件
    
    var helloworld = require('./helloworld');
    console.log('helloworld', helloworld);
    helloworld.helloworld('better');
    

      

    接下来,在publishNpm目录下,执行npm init命令,初始化package.json文件

    npm init
    // package.json 文件
    
    {
    "name": "lld-npm-demo",
    "version": "1.0.1",
    "description": "publish npm demo",
    "main": "index.js",
    "scripts": {
    "test": "echo "Error: no test specified" && exit 1"
    },
    "author": "better",
    "license": "ISC"
    }
    

      

    注意:1、npm包名称name的值不能和已经存在的npm包名相同;2、每次版本更新都必须修改版本号version的值

    3、发布npm到npm公共仓库
    添加账户

    npm adduser


    输入用户名、密码和邮箱

    查看当前登录的用户

    npm who am i


    发布npm包

    npm publish


    发布成功以后,就可以在npm个人中心看到刚刚发布的npm包了

    更新npm包
    和发布npm一样都是使用npm publish命令,更新发布之前必须修改版本号

    使用npm
    和我们平时使用npm一样

    npm install lld-npm-demo


    发布npm常见错误
    1、npm仓库设置了淘宝镜像

    npm ERR! code E403
    npm ERR! 403 Forbidden - PUT https://registry.npm.taobao.org/lld-npm-demo - no_perms
    
    npm ERR! A complete log of this run can be found in:
    npm ERR! /Users/better/.npm/_logs/2019-01-24T02_08_54_914Z-debug.log
    解决方案:
    
    // 检查仓库是否被设成了淘宝镜像库(https://registry.npm.taobao.org/)
    npm config get registry
    
    // 如果设置了淘宝镜像,执行以下命令
    npm config set registry=http://registry.npmjs.org
    
    // 解决问题后重新发布
    npm publish
    
    // 发布成功以后,在设会淘宝镜像
    npm config set registry=https://registry.npm.taobao.org/
    

      

    2、账号未登录

    npm ERR! code E401
    npm ERR! 401 Unauthorized - PUT http://registry.npmjs.org/lld-npm-demo - You must be logged in to publish packages.
    
    npm ERR! A complete log of this run can be found in:
    npm ERR! /Users/better/.npm/_logs/2019-01-24T02_13_00_370Z-debug.log
    解决方案:
    
    // 登录用户 npm login
    npm adduser
    
    // 登录用户以后重新发布
    npm publish
    

      

    3、重新发布未修改版本号

    npm ERR! code E403
    npm ERR! 403 Forbidden - PUT http://registry.npmjs.org/lld-npm-demo - You cannot publish over the previously published versions: 1.0.0.
    
    npm ERR! A complete log of this run can be found in:
    npm ERR! /Users/better/.npm/_logs/2019-01-24T02_55_19_409Z-debug.log
    解决方案:在package.json文件修改版本号
    

      

  • 相关阅读:
    Ubuntu8.04代码已冻结发布在即
    Ruby on rails开发从头来(五十) ActiveRecord基础(更新记录)
    Ruby on rails开发从头来(四十四) ActiveRecord基础(创建记录)
    Ruby on rails开发从头来(四十五) ActiveRecord基础(读取记录)
    网络恶搞“白送家产”:美国男子回家发现财产被搬空
    Ruby on rails开发从头来(四十三) ActiveRecord基础(连接数据库)
    Ruby on rails开发从头来(四十九) ActiveRecord基础(行数和再加载数据)
    Ruby on rails开发从头来(四十七) ActiveRecord基础(强大的find方法)
    Ruby on rails开发从头来(四十六) ActiveRecord基础(SQL和Active Record)
    简单三步堵死SQL Server注入漏洞
  • 原文地址:https://www.cnblogs.com/shuiche/p/11435361.html
Copyright © 2020-2023  润新知