美文网首页
cnpm 私有服务器搭建

cnpm 私有服务器搭建

作者: 宅神sean | 来源:发表于2017-12-26 17:03 被阅读0次

    为什么要用cnpm?


    主要有两点:

    • 缓存npm官方包,加快公司内部访问速度
    • 管理公司内部不愿意公开的私有npm包

    获取项目代码


    至少2017年12月的时候master分支不能使用,希望维护者可以未来修复

    git clone git://github.com/cnpm/cnpmjs.org.git
    cd cnpmjs.org
    git checkout 2.19.4
    

    创建mysql表结构


    以下命令,需要安装mysql,并确保mysql指令在路径上面

    //假设 username是root, 下面指令会提示输入密码
    $ mysql -u root -p 
    //创建一个cnpmjs_test的数据库,并建表
    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", // 假设mysql的密码是root
         dialect: "mysql",
         host: "127.0.0.1",
         port: 3306
    },
    admins: {
         sean: "coolguy@foxmail.com"
    },
    registryHost: '127.0.0.1:7001',
    syncModel: "exist", // 定时同步已经存在于数据库的包
       
    

    备注:127.0.0.1 需要改成自己的地址

    启动服务


    node dispatch.js
    

    这时候就可以打开http://127.0.0.1:7002

    使用私有registry下载npm包


    在install之前,应该先去http://127.0.0.1:7002 搜索这个包,如果没有先sync一下,确保私有库里面有了,再install, 不然会有报错

    sudo npm install cnpm -g
    cnpm set registry http://127.0.0.1:7001
    cnpm install react 
    

    遇到的一些问题


    在syn metro-bundler的时候,description中有emoji的标签,log出现ER_TRUNCATED_WRONG_VALUE_FOR_FIELD的错误。 原因是description的编码不支持,可以修改编码到utf8mb4(尝试了,没成功), 用了一种过滤的方式。 在package.js 中

    description = description.replace(/[\u0800-\uFFFF]/g, '');
    

    如果其他人也遇到这个问题,可以借鉴(当然提了一个issue给alibaba的维护者)。

    相关文章

      网友评论

          本文标题:cnpm 私有服务器搭建

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