企業私有npm部署和實現npm發佈

私有npm部署html

[TOC]node

背景:  爲了逼格的提高。簡單的囉嗦一下,可忽略。mysql

  1. 目前咱們團隊中的多個項目是同時進行開發的,每一個項目中組件都有很是高可複用型。當遇到以前某一塊的業務場景須要進行升級的時候,爲了減小去每個項目中修改大量代碼的時間,咱們只須要在私有的cnpm廠庫修改一次,而後依次在每一個項目中npm update對應的包,問題就解決了。
  2. 方便查看團隊中有多少組件以及組件如何使用,讓每一個成員有了提取組件動力,促進團隊快速成長。
  3. 開發過程當中不乏遇到趕工期,恰恰這個時候又遇到複雜的業務。在此以前是先把以前作的項目代碼閱讀一邊,在把關鍵代碼複製過來,進行調試。恰巧代碼不是本身寫得。又要可能花費一部分時間去閱讀如下代碼邏輯。個人天呀!是否是小半天過去了,還能不能愉快的吃雞了。

1、部署方式

  • 私有npm部署方式
    1. cnpm
    2. sinopia
    3. verdaccio
  • 選擇cnpm緣由
    1. cnpm中服務端經過koa框架進行開發,方便後續查看源碼。
    2. 支持 msyql,數據遷移方便,
    3. 國內cnpm團隊開發,遇到問題方便查找。

2、前期準備

  1. linux環境(mac用戶忽略)
  2. mysql安裝
  3. navicate鏈接mysql
  4. nrm管理npm源

3、cnpm安裝

  1. 下載cnpmjs
    #clone from github
     $ git clone git://github.com/cnpm/cnpmjs.org.git
     $ cd cnpmjs.org
     #create mysql tables,在cnpm 目中進行啓動mysql
     $mysql -u root -p
     mysql> create database cnpmjs
     mysql> use cnpmjs;
     mysql> source docs/db.sql
    複製代碼
  2. 修改配置文件
    • 爲防止誤操做建議不要修改config/index.js。咱們在config目錄下新建index.js
    $ vim config/config.js
    複製代碼
    module.exports = {
        debug: false,
        database: {
        db: 'cnpmjs', // 數據庫名,默認爲cnpmjs_test
        host: '127.0.0.1', // 服務器地址
        port: 3306, // 端口
        username: 'root', // 用戶名,
        password: '123456', // 對於cento或ubuntu若是用root用戶名鏈接數據庫,這裏請設置密碼爲空.非root請正常填寫
        dialect: 'mysql' // 使用mysql,默認爲sqlite, 還支持postgres,mariadb,暫時不支持oracle
        },
        admins: {
        admin: 'admin@cnpmjs.org' // 管理員權限
        },
        scopes: ['@vt'], // 私有包必須依附於 scope 下
        registryHost: '127.0.0.1:7001', //替換服務器ip
        bindingHost: '0.0.0.0'
      };
    複製代碼

3.啓動服務linux

  • window用戶
    #cnpmjs.org目錄中啓動
    node diapatch.js  
    複製代碼
  • 非window經過
    npm start
    npm restart
    npm stop
    複製代碼
    asdf

4、cnpm包的發佈

```
    nrm add local http://127.0.0.1:7001/
    nrm use local
    nrm ls
    npm login
    npm publish
    # 查看包的詳細信息
    npm info
    #新建一個項目進行下載
    npm install @vt/zhangle
```
複製代碼

5、爬坑祕籍

  • 建議使用 git clone git://github.com/cnpm/cnpmjs.org.git 不建議使用全局安裝 經過npm install cnpmjs.org進行安裝的,須要找到全局安裝cnpmjs.org位置( /root/.nvm/versions/node/v10.15.3/lib/node_modules/cnpmjs.org) ,修改config/config.js 經過cnpmjs.org start
  • cnpm 7002 能夠正常訪問,7001端口訪問失敗.這種狀況最大多是沒有鏈接數據庫.
  • 啓動過程出現問題絕大多數都是config/index.js配置問題.
  • 阿里雲外部想要訪問須要作如下處理安全策略端口7001和7002是否對外開放.
  • navicate不能鏈接mysql數據庫
```
mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
Query OK, 0 rows affected (0.00 sec)

mysql>FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

```
複製代碼
  • 若是用sqlite3不能訪問7001,須要node ./models/init_script.js sqlite 進行初始化

後續git

  • 沒有npm列表,只能經過搜索後續補充,須要進行優化界面
  • 目前尚未組件開發的規範文檔.
  • 服務端docker部署未完成

參考資料

  1. github cnpm
  2. docker cnpm
  3. sinopia
相關文章
相關標籤/搜索