美文网首页
A48 搭建npm私库

A48 搭建npm私库

作者: JSleefat | 来源:发表于2019-11-26 11:16 被阅读0次

    npm私库搭建

    搭建准备

    • node
    • cnpmjs
    • mysql
    • docker(可选)

    方案:

    • sinopia
      最近一次github更新4 years ago
      太久未维护

    • verdaccio
      sinopia的fork 担心也会停止维护

    • git+ssh
      据说权限管理复杂

    • cnpmjs
      淘宝 NPM 镜像 (本次选择)

    npm私有库搭建步骤

    1. 克隆cnpmjs
      安装依赖并启动,7001为注册服务,7002为web页
    2. 下载mysql
      可选择安装workbench可视化编辑
    3. 配置cnpmjs数据库信息
      指向数据库所在位置,配置登录信息
    4. 配置私库地址
      更改config中的registryHost
      修改libs下面的download连接格式

    tips:可用nrm 管理npm仓库

    发布npm包

    1. 添加用户到admins
      cnpm adduser --registry=http://192.168.17.169:7001/
      Username: admin
      Password: 设置密码
      Email: (this IS public) 上面修改后的邮箱地址

    2. 登录
      cnpm login --registry=http://192.168.17.169:7001/

    3. 发布包
      如果设置了scopes
      // registry scopes, if don't set, means do not support scopes
      scopes: [ '@cnpm', '@cnpmtest', '@cnpm-test', '@jnpm' ],
      需要在发布包中的package.json上添加scope前缀
      "name": "@jnpm/jhello",
      然后才能执行发布的命令
      cnpm publish --registry=http://192.168.17.169:7001/

    4. 下载包
      cnpm install --registry=http://192.168.17.169:7001/

    tips:设置scopes后,package.json中的依赖包也需要添加前缀, 像这样

    "dependencies": {
        "@jnpm/jumatable":"^1.0.0",
        "@jnpm/jumahello":"^1.0.0"
    }
    

    一些报错信息

    1. mysql报错
      动作:项目运行
      错误信息:ER_NOT_SUPPORTED_AUTH_MODE: Client does not support authentication protocol requested by server; consider upgrading MySQL client
      原因:mysql不同版本密码算法不一致
      解决方法:ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的密码';
    2. node报错
      动作:执行node --harmony_generators dispatch.js时
      错误信息:node: bad option: --harmony_generators
      原因:当前node版本不支持--harmony_generators选项
      解决方法:可以更换命令node dispatch.js来启动,或者升级node到最新版本
    3. publish模块报错
      动作:cnpm publish [组件名]
      错误信息:only allow publish with @cnpm, @cnpmtest, @cnpm-test scope(s)
      原因:私有库设置了scopes
      解决方法:在package.json中的name字段添加scopes前缀
    4. install模块报错
      动作: npm install --registry=http://192.168.17.169:7001
      错误信息:404
      原因:安装时并没有从本地获取包,而是从线上获取
      解决方法: cnpm install --registry=http://192.168.17.169:7001
      过程:试了很多网上的解决方法,修改config中的registryHost;修改libs下面的download连接格式,最后更换cnpm才得以安装

    使用docker

    1. 修改cnpmjs中的docker配置
      将docs-dockerize-config.js与我们自定义添加的config-config.js中的配置修改一致
    2. 生成镜像
      docker build -t juma/cnpm:127 .
    3. 运行镜像
      docker run juma/cnpm:127

    tips:
    删除容器:docker rm $(docker ps -aq);
    删除镜像:docker rmi ID/NAME

    参考资料

    相关文章

      网友评论

          本文标题:A48 搭建npm私库

          本文链接:https://www.haomeiwen.com/subject/mwbfwctx.html