為什么要用cnpm缴啡?
主要有兩點(diǎn):
- 緩存npm官方包泛释,加快公司內(nèi)部訪問速度
- 管理公司內(nèi)部不愿意公開的私有npm包
獲取項(xiàng)目代碼
至少2017年12月的時(shí)候master分支不能使用慨代,希望維護(hù)者可以未來修復(fù)
git clone git://github.com/cnpm/cnpmjs.org.git
cd cnpmjs.org
git checkout 2.19.4
創(chuàng)建mysql表結(jié)構(gòu)
以下命令葬项,需要安裝mysql轻局,并確保mysql指令在路徑上面
//假設(shè) username是root誊涯, 下面指令會(huì)提示輸入密碼
$ mysql -u root -p
//創(chuàng)建一個(gè)cnpmjs_test的數(shù)據(jù)庫挡毅,并建表
mysql> create database cnpmjs_test
mysql> use cnpmjs_test
mysql> source docs/db.sql
編輯配置文件
vim config/index.js
enableCluster: true,
database: {
db: "cnpmjs_test",
username: "root",
password: "root", // 假設(shè)mysql的密碼是root
dialect: "mysql",
host: "127.0.0.1",
port: 3306
},
admins: {
sean: "coolguy@foxmail.com"
},
registryHost: '127.0.0.1:7001',
syncModel: "exist", // 定時(shí)同步已經(jīng)存在于數(shù)據(jù)庫的包
(備注:127.0.0.1 需要改成自己的地址)
啟動(dòng)服務(wù)
node dispatch.js
這時(shí)候就可以打開http://127.0.0.1:7002
使用私有registry下載npm包
在install之前,應(yīng)該先去http://127.0.0.1:7002 搜索這個(gè)包暴构,如果沒有先sync一下跪呈,確保私有庫里面有了,再install取逾, 不然會(huì)有報(bào)錯(cuò)
sudo npm install cnpm -g
cnpm set registry http://127.0.0.1:7001
cnpm install react
遇到的一些問題
在syn metro-bundler的時(shí)候耗绿,description中有emoji的標(biāo)簽,log出現(xiàn)ER_TRUNCATED_WRONG_VALUE_FOR_FIELD的錯(cuò)誤砾隅。 原因是description的編碼不支持缭乘,可以修改編碼到utf8mb4(嘗試了,沒成功), 用了一種過濾的方式堕绩。 在package.js 中
description = description.replace(/[\u0800-\uFFFF]/g, '');
如果其他人也遇到這個(gè)問題策幼,可以借鑒(當(dāng)然提了一個(gè)issue給alibaba的維護(hù)者)。