mac上使用cnpm搭建npm私有仓库,并上传/下载私有npm包

摘要:
5.我们需要首先做两件事来发布npm包。1.为了便于管理npm的来源,我们安装了nrm$npminstallnrm-g$nrmls#npm-----https://registry.npmjs.org/#cnpm --- http://r.cnpmjs.org/#*淘宝-https://registry.npm.taobao.org/#nj ----- https://registry.nodejitsu.com/#rednpm - http://registry.mirror.cqupt.edu.cn/#npmMirrorhttps://skimdb.npmjs.com/registry/#edunpm - http://registry.enpmjs.org/从上面,我们可以看到可用的npm仓库地址。*指明当前仓库地址。使用npmuse'name'切换仓库。2.添加本地私人仓库。cnpm提供两个端口:7001和7002。7001用于NPM的注册服务,7002用于Web访问$nrmaddlocalhttp://127.0.0.1:7001/addregistrylocalsuccess$nrmls#npm----https://registry.npmjs.org/#cnpm --- http://r.cnpmjs.org/#*淘宝-https://registry.npm.taobao.org/#nj ----- https://registry.nodejitsu.com/#rednpm - http://registry.mirror.cqupt.edu.cn/#npmMirrorhttps://skimdb.npmjs.com/registry/#edunpm - http://registry.enpmjs.org/#local -- http://127.0.0.1:7001/local这是我们刚刚添加的本地私人npm仓库。执行nrmouselocal以使用本地仓库,然后可以正常使用npmlogin//输入用户名和密码npmpublish。关于如何发布npm包,请参考我之前写的文章https://www.cnblogs.com/yalong/p/10388384.html成功发布后,您可以在第7002页看到包总数增加了。

原文地址:https://www.cnblogs.com/yalong/p/12837461.html

前言

随着Nodejs开发的项目越来越多,Node项目管理就成了一个需要思考的问题了。如果所有项目都开源统一用 NPM 进行管理也没什么问题,但总有一些是我们不希望的完全开放的代码,作为企业是核心秘密保留在公司内部,这个时候就需要在公司内网也搭建一套 NPM 依赖管理系统。
CNPM正好就提供了这个功能。
CNPM官方githuib地址, 但是官方文档不够全面:点我 。
大家可以下载我的这份, 我在官方项目基础上进行了配置 点我, 具体配置下面会讲。
官网上写的是在linux环境下,其实在什么环境都可以,这里就讲在mac下部署cnpm服务。

整个过程可以分为如下几步:

1.下载cnpm项目代码。

git clone https://github.com/YalongYan/private-cnpm
或者直接下载压缩包。大家下载官方的git地址也可以,做相应的配置修改就可。

2.下载mysql & 导入数据表

mac下mysql的下载安装参考 这里
这里先记下数据库的用户名,密码,下面会用到。
安装 MySql的可视化工具 MySqlWorkBench。
首次打开,MySqlWorkBench, 需要连接数据库,如下,点击加号, 下面的local是我之前连接好的,像这样连接好的, 下次直接双击这个数据库就可直接进入。

mac上使用cnpm搭建npm私有仓库,并上传/下载私有npm包第1张
依次输入信息,1的名字随便写, 2 3 分别是用户名,密码,填写完,点击4 测试是否能连接上,成功了点击ok。
mac上使用cnpm搭建npm私有仓库,并上传/下载私有npm包第2张
点击如下按钮,创建数据库:

mac上使用cnpm搭建npm私有仓库,并上传/下载私有npm包第3张

依次填入信息,最后Apply(这个test是数据库名字)

mac上使用cnpm搭建npm私有仓库,并上传/下载私有npm包第4张

然后就可以看到新增的数据库了。

mac上使用cnpm搭建npm私有仓库,并上传/下载私有npm包第5张

导入数据表:

mac上使用cnpm搭建npm私有仓库,并上传/下载私有npm包第6张
选择cnpm项目里,docs目录下的db.sql
记得在最上面加上一行, use test;
test是刚才的数据库名字。然后点击左边起第一个⚡️
mac上使用cnpm搭建npm私有仓库,并上传/下载私有npm包第7张

这样就导入成功了,如下:

mac上使用cnpm搭建npm私有仓库,并上传/下载私有npm包第8张
3.修改cnpm里面对应的配置

修改config/index.js 里面的一些参数

database: {
    // 设置数据库信息
    db: 'test',
    username: 'root',
    password: '123456',

    // the sql dialect of the database
    // - currently supported: 'mysql', 'sqlite', 'postgres', 'mariadb'
    dialect: 'mysql',

    // custom host; default: 127.0.0.1
    // host: '127.0.0.1',
    host: '0.0.0.0',// 用这个 是为了 用电脑ip访问

    // custom port; default: 3306
    port: 3306,

    // use pooling in order to reduce db connection overload and to increase speed
    // currently only for mysql and postgresql (since v1.5.0)
    pool: {
      maxConnections: 10,
      minConnections: 0,
      maxIdleTime: 30000
    },

    dialectOptions: {
      // if your server run on full cpu load, please set trace to false
      trace: true,
    },

    // the storage engine for 'sqlite'
    // default store into ~/.cnpmjs.org/data.sqlite
    storage: path.join(dataDir, 'data.sqlite'),

    logging: !!process.env.SQL_DEBUG,
  },
  enablePrivate: true, // 只有管理员可以发布 npm 包,默认为 false,即任何人都可以发布包
  scopes: ['@company'], // 私有包必须依附于 scope 下, 这个compan可以是公司名字啥的,自己定义。
// default system admins
  admins: {
    // name/密码: email,
   // 这里这个admin 既是用户名, 也是密码
    admin: 'admin@cnpmjs.org',
    dead_horse: 'dead_horse@qq.com',
  },
4.启动cnpm项目

npm install & npm run start
访问 http://127.0.0.1:7002/

mac上使用cnpm搭建npm私有仓库,并上传/下载私有npm包第9张

访问http://127.0.0.1:7001/
返回的是一堆json 就成功了。
这里其实可以吧127.0.0.1 换成本机ip, 这样在局域网内的其他电脑,可以直接通过ip访问我们的服务。
5.发布npm包

我们需要先做两件事
1.为了方便管理npm的源, 我们安装 nrm

$ npm install nrm -g

  $ nrm ls

  # npm ---- https://registry.npmjs.org/
  # cnpm --- http://r.cnpmjs.org/
  # * taobao - https://registry.npm.taobao.org/
  # nj ----- https://registry.nodejitsu.com/
  # rednpm - http://registry.mirror.cqupt.edu.cn/
  # npmMirror  https://skimdb.npmjs.com/registry/
  # edunpm - http://registry.enpmjs.org/

上面可以看出可以用的npm仓库地址,*标明当前使用的仓库地址,使用npm use 'name'切换仓库
2.添加本地私有仓库
cnpm提供两个端口:7001和7002,其中7001用于NPM的注册服务,7002用于Web访问

  $ nrm add local http://127.0.0.1:7001/

    add registry local success

  $ nrm ls

  # npm ---- https://registry.npmjs.org/
  # cnpm --- http://r.cnpmjs.org/
  # * taobao - https://registry.npm.taobao.org/
  # nj ----- https://registry.nodejitsu.com/
  # rednpm - http://registry.mirror.cqupt.edu.cn/
  # npmMirror  https://skimdb.npmjs.com/registry/
  # edunpm - http://registry.enpmjs.org/
  # local -- http://127.0.0.1:7001/

local就是我们刚才添加的本地私有npm仓库,执行
nrm use local
使用本地仓库

然后就可以正常使用了

npm login  // 输入用户名,密码
npm publish 

对于如何发布npm包,可以参考我之前写的这篇https://www.cnblogs.com/yalong/p/10388384.html
发布成功后 ,在7002页面可以看到 total packages 增加了。

mac上使用cnpm搭建npm私有仓库,并上传/下载私有npm包第10张
这里只能搜索,才能找到对应的npm包

mac上使用cnpm搭建npm私有仓库,并上传/下载私有npm包第11张

mac上使用cnpm搭建npm私有仓库,并上传/下载私有npm包第12张 

6.下载npm包

这里下载就跟正常的下载是一样的,
npm install @company/xxx-test
因为目前我们的npm源 还是local。
以后如果想下载公网的npm, 需要切换源
nrm use npm

期间遇到的问题:

出现下面这个问题, 是连不上数据库

    code: 'ER_NOT_SUPPORTED_AUTH_MODE',
    errno: 1251,
    sqlMessage: 'Client does not support authentication protocol requested by server; consider upgrading MySQL client',
    sqlState: '08004',
    fatal: true

解决办法如下:
1.首先进入mysql命令行 mac下如何进入mysql命令行
2.然后执行如下代码:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
FLUSH PRIVILEGES;

123456换成自己的数据库密码。 重启node服务即可。
参考链接:

https://www.cnblogs.com/JimmyLuo/p/7079634.html

http://blog.fens.me/nodejs-cnpm-npm/

https://www.jianshu.com/p/4e7414f7fcc8

https://github.com/zhengyange/blog/blob/master/window-cnpmjs.md

https://www.jianshu.com/p/4e7414f7fcc8

免责声明:文章转载自《mac上使用cnpm搭建npm私有仓库,并上传/下载私有npm包》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇git 给远程库 添加多个url地址node.js之windows下环境终极配置下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

死锁及oracle死锁--转载

今天看群里在讨论数据库死锁的问题,也一起研究了下,查了些资料在这里总结下。 所谓死锁: 是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。 由于资源占用是互斥的,当某个进程提出申请资源后,使得有关进程在无外力协助下,...

轻量级ORMPetaPoco及改进

      PetaPoco描述       PetaPoco是一个微小的,快速的,单个文件的微型ORM,可以运行在.NET和Mono平台上。相对于NHibernate与Entity Framework,PetaPoco有以下几点非常吸引我:           1. 轻量级,高性能;           2. 可同时运行在.net与mono平台上;  ...

maven入门基础:仓库概念和仓库分类(一)

一. 仓库概念 1. 构件:指的是任何的依赖、插件、项目输出的jar包,都称之为构件 2. 仓库:Maven构件在统一的地方存储,然后供任何Maven项目使用 3. 仓库根据构件的唯一坐标(/groupId/artifactId/version/artifactID-version.packaging)确定唯一的存放地址,这就是仓库的布局 4. 坐标内容包...

MACbook安装WIN7后亮度调节的办法

MACbook安装WIN7后亮度调节的办法:1.按WIN+X打开移动中心,第一个就是亮度调节。或者右击托盘区的电池,选择移动中心也可以。2.右击托盘区域的电池,选择电源管理,在界面中调节亮度。 3.有些MACbook笔记本显卡驱动不匹配的时候,热键F1 F2功能键不一定管用。...

MongoDB用户与角色管理

(一)用户管理(1)创建用户1.要添加用户,MongoDB提供了db.createUser()方法。添加用户时,可以为用户分配角色,授予权限。2.在数据库中创建的第一个用户应该具有管理其他用户的权限。3.添加用户时,可以在特定的数据库中创建该用户,该数据库是用户的身份验证数据库。用户可以在不同的数据库之间拥有特权,也就是说,用户的权限不限于其身份验证数据...

常见的git清单

我们每天使用 Git ,但是很多命令记不住。 一般来说,日常使用只要记住下图6个命令,就可以了。但是熟练使用,恐怕要记住60~100个命令。 这篇文章是从别人博客上copy重新整理出来的,作为笔记用,记不得命令的时候可以随时拿出来查查。 下面是整理的常用 Git 命令清单。几个专用名词的译名如下。 Workspace:工作区 Index / Stage:...