本文为自己开发中的总结,有问题和错误欢迎指正
环境准备
到写下本文时,本人环境版本如下
- 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至最新版即可
创建数据库
服务能不能起来,主要取决于数据库的配置,和下面的配置,我们先把基础配置配好,再去导入数据库相关表。
- 首先,打开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
- 导入数据库
本人数据库菜鸟,全部使用图形化操作,我使用的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的过程类似。大概过程分为:
- 你得有一个cnpm私服的账号
- 根目录下执行npm adduers,添加用户名密码
- 运行npm publish,将包发布到npm仓库中,但是,我们的仓库名很容易和线上已有包重名,造成发布失败,这就需要我们把名字起的独特一点,如果你的在cnpm私库下面,还需要有作用域来解决这一问题。
npm install 试试使用的库吧!
写在最后
按照网上教程走下来的,基本数据库配置没有问题,就不会有啥问题。
ok,就这样了,
(完)
网友评论