Fork me on GitHub

搭建CNPM私有仓库(cnpmjs.org)

欢迎关注前端早茶,与广东靓仔携手共同进阶
前端早茶专注前端,一起结伴同行,紧跟业界发展步伐~
 

环境准备

到写下本文时,环境版本如下

  • Node: 12.16.3
  • mysql: 8.0.19
  • npm: 6.14.5
  • 操作系统win10(cnpm不支持win部署,到时候可修改启动命令,有Linux环境更佳)

安装cnpmjs.org

git clone https://github.com/cnpm/cnpmjs.org.git
cd cnpmjs.org
npm install

以上都是前端常规操作,不做特殊介绍,可能出现安装依赖报错(我没遇到),升级npm至最新版即可

创建数据库

服务能不能起来,主要取决于数据库的配置,和下面的配置,我们先把基础配置配好,再去导入数据库相关表。

  1. 首先,打开cnpmjs.org项目目录下的config/index.js文件,我们需要配置数据库的连接,找到如下字段:
  database: {
    db: 'cnpmjs',
    username: 'root',
    password: '******',

    // 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',

    // 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,
  },
  • db配置为你将要创建的数据库名称,包括你的数据库用户名和密码,这里我使用的是我的本地用户名和密码,将来可用生产数据库。
  • dialect:该字段默认为sqlite,因为我这里使用的是Mysql,需要改成'mysql'
  • 其他字段不变,先采用默认值。
    以上是数据库连接的相关配置,该配置文件中,还有其他配置项需要注意,这里参考以下博客
    https://blog.csdn.net/weixin_34138255/article/details/91371514
  1. 导入数据库
    本人数据库菜鸟,全部使用图形化操作,我使用的Navicat。
  • 创建数据库,名字为以上配置文件中的名字,如'cnpmjs'
  • 导入数据库配置文件(右击'表',点运行SQL文件,常规操作不再赘述)
  • 配置文件位于 \docs\db.sql,正确的导入会生成16张表。(表的数量以及其他数据库配置和cnpmjs的版本有关,我们之前安装的是最新版,这里是16张表)

启动项目

上面对照着文档已经推荐链接中的博客,配置没问题的话就可以启动,我使用的是

node dispatch.js

服务起来后,会在本地localhost或(127.0.0.1)下起两个端口,其中7002是web端口,通过浏览器访问,7001是服务端口,用于将来管理代码。连个端口都可配置,在上面配置文件中比较容易找到,没啥特殊情况,建议采用默认配置。
我们浏览器访问7002就可以看到CNPM的界面了。

如果你的环境版本都是最近的新版本,应该不会出现什么问题

同步数据

考虑到我们的开发环境为内网,不具备互联网,这里得需要我们手动去同步NPM到我们的私有仓库(时间很长,文件很多,很占内存)

同步方式

我们先尝试着在我们现有的仓库内搜某有个包,这时候会出现找不到包,下面的提示页面中就会有同步NPM的操作,点击同步就行了,第一次同步时间相当漫长,期间不要切换页面,因为我们在本地安装搭建的环境,模块的资源都是保存到本地的,我同步了10分钟,大概4千多个包测试了一下,占了我盘3G内存,心塞关掉,经测试,这一块没问题,到时候生产也这么做就行。

发布npm包

和发布npm的过程类似。大概过程分为:

  1. 你得有一个cnpm私服的账号
  2. 根目录下执行npm adduers,添加用户名密码
  3. 运行npm publish,将包发布到npm仓库中,但是,我们的仓库名很容易和线上已有包重名,造成发布失败,这就需要我们把名字起的独特一点,如果你的在cnpm私库下面,还需要有作用域来解决这一问题。
    npm install 试试使用的库吧!

写在最后

按照网上教程走下来的,基本数据库配置没有问题,就不会有啥问题。

ok,就这样了,




原文链接:https://www.jianshu.com/p/8fbeb08df92d
欢迎关注前端早茶,与广东靓仔携手共同进阶
前端早茶专注前端,一起结伴同行,紧跟业界发展步伐~
 
posted @ 2022-10-12 16:13  广东靓仔-啊锋  阅读(520)  评论(0编辑  收藏  举报