pm 2+sinopiaを使用して、ローカルnpm私有倉庫を構築する.

5110 ワード

背景
  • を構築するたびに、静的リソースの構築にかかる時間は基本的に半時間であり、私有倉庫を利用して構築速度を向上させることができるかどうか.
  • は内部の公共js libを抜き出して公開して共用することができます.
  • 準備について
  • は、説明できない権限を持つマシンの一つです.
  • nodejsです
  • gccとその関連(nodejs依存).
  • pm 2(node appモニタ再起動).
  • sinopia(プライベートリポジトリap、nexusのような).
  • 構築ステップ
    nodejsをインストールします
    binaryをダウンロードして、tarコマンドで解凍して環境変数を追加します.
    tar -Jxvf node-v8.9.3-linux-x64.tar.xz 
    
    //   .bash_profile 
    vi .bash_profile 
    //      
    export NODE_HOME=/opt/ibank/node-v8.9.3-linux-x64 
    export PATH=$PATH:$NODE_HOME/bin 
    export NODE_PATH=$NODE_HOME/lib/node_modules 
    
    //    
    source .bash_profile 
    
    ISSUE:インターネットでソフトリンクを追加すると言っていますが、実際は必要ありません.
    その後、ln -s /[your node path] /usr/local/bin.
  • 分岐1:node -v、gccをアップグレードします.
  • 分岐2:出力バージョン番号.
  • gccアップグレード(代替)
    gccをダウンロードして、ストレスを解消して、依存を調べます.ここの下の4.9.4は全部で前のバージョンは4です.大きなバージョンにまたがって卵にならないようにします.
    tar -zxvf gcc-4.9.4.tar.gz 
    vi ./gcc-4.9.4/contrib/download_prerequisites 
    
    ライブラリmpfr、gmp、isl、cloog、mpcをダウンロードして解凍して、GLIBCXX_3.4.11 not foundスクリプトに従って走るコマンドでソフトリンクを追加します.
    MPFR=mpfr-2.4.2 
    GMP=gmp-4.3.2 
    MPC=mpc-0.8.1 
    #   
    wget [ftp://gcc.gnu.org/pub/gcc/infrastructure/$MPFR.tar.bz2](ftp://gcc.gnu.org/pub/gcc/infrastructure/$MPFR.tar.bz2) || exit 1 
    #   
    tar xjf $MPFR.tar.bz2 || exit 1 
    #    
    ln -sf $MPFR mpfr || exit 1 
    
    gccのソースディレクトリの外に自分のdownload_prerequisitesディレクトリを作って、gcc-buildを実行して、配置は自分の必要に応じて選択します.私のconfiguregcc-buildは同じクラスのディレクトリです.
    ../gcc-4.9.4/configure --prefix=/usr --infodir=/usr/share/info --mandir=/usr/share/man --libdir=/usr/lib64 --libexecdir=/usr/lib64 --enable-languages=c,c++,objc,fortran,obj-c++,java --enable-checking=release --with-gxx-include-dir=/usr/include/c++/4.3 --enable-ssp --disable-libssp --with-bugurl=http://bugs.opensuse.org/ --with-pkgversion='SUSE Linux' --disable-libgcj --disable-libmudflap --with-slibdir=/lib64 --with-system-zlib --enable-__cxa_atexit --enable-libstdcxx-allocator=new --disable-libstdcxx-pch --enable-version-specific-runtime-libs --program-suffix=-4.3 --enable-linux-futex --without-system-libunwind --with-cpu=generic --build=x86_64-suse-linuxgeneric --build=x86_64-suse-linux 
    
    次いでgcc-4.9.4.
    ISSUE:インストール中にzlibが不足しています.自分でダウンロード、解凍、make && make install./configureをダウンロードすればいいです.
    バックアップ前のmake && make install.
    mv libstdc++.so.6 libstdc++.so.6.bak 
    
    ソフトリンクを更新します
    ln -s /usr/lib64/gcc-4.9.4/libstdc++.so.6.20  /usr/lib64/libstdc++.so.6 
    
    libstdc++.so.6はバージョン番号を出力する.
    私有倉庫を建てる
    イントラネットは代理店と接続して登録センターを設置する必要があります.ここはネットの代理のnexusにつながります.
    npm set proxy [http://$](https://outlook.live.com/mail/){your nodejs proxy address} 
    npm set registry [http://$](https://outlook.live.com/mail/){your nodejs registry} 
    
    p 2、sinopiaとsinopia-p 2-starterを取り付けます.
    npm install -g pm2 
    npm install -g sinopia 
    npm install -g sinopia-pm2-starter 
    
    使い方:
    sinopia-pm2-starter --help 
    sinopia-pm2-starter config:host '0.0.0.0' 
    sinopia-pm2-starter config:post ${port} 
    sinopia-pm2-starter start 
    
    現在のネットワーククライアントのnpm配置を修正します.
    npm set proxy null 
    npm set registry [http://$](https://outlook.live.com/mail/){address}:${port}/ 
    
    ISSUE:node -v、sinopia構成を修正し、proxyを追加する必要があります.
    vi .config/sinopia/config.yaml 
    packages: 
      '@*/*': 
        # scoped packages 
        access: $all 
        publish: $authenticated 
        proxy: npmjs #<====add this 
    sinopia-pm2-starter restart 
    
    検証'@storybook/cli' is not in the npm registryを修正し、autopackage.batを構築に提出する.
  • 初期:最終的に構築されたプロジェクトは、平均的にaut package.batが24分間かかります.
  • プロジェクトの構築時間は最初の1つに繰り上げられます.平均aut package.batは18分間かかります.
  • 今:16分です.明らかな向上がない
  • 分析ログは、nexus自身がキャッシュを持参しており、npm libをダウンロードする際にアップグレードスペースは存在しません.主要な問題は、構築するたびに、以前に構築されたディレクトリを削除することであり、node_を含む.modules、npm installの場合はダウンロード時間が短く、インストール時間が長いです.
    大丈夫です.最終的な目的は機能グループ内部の公共モジュールを管理することです.
    リリース
    まず、sinopiaにユーザーを追加します.
    :~> npm adduser --registry ${sinopiaAddress} 
    Username: ${username} 
    Password: ${password} 
    
    それからモジュールを探してみてください.ここで私が作った中国行政区画コードという公共モジュールを使って実験します.ステップは非常に簡単です.
  • call "C:
    odejs
    pm" config set registry ${sinopiaAddress}
    で作成し、コピーしてインターフェースを修正した後、npm initです.
  • は、元のプログラムAにnpm登録センターを設定する.nrmで管理できます.インターネット環境が簡単で、登録センターがnexusエージェントに設置されていますので、簡単なnpm publishです.
  • npm config set registry ${sinopiaAddress}、使えます.
  • 公共モジュールをどうやって抽出するかについては、どのような規則に従うべきですか?注意すべき点はたくさんあります.例えば:
  • どのようなnpmにリリースする必要がありますか?test、coverage report、モジュール参照ドキュメントなどは不要です.npm installまたはpackage.jsonに配置することができます.
  • 互換性を考慮して、私達のプロジェクトは基本的にES 6、ES 7などの新しい特性を使っています.
  • は、モジュールのホストコードサービスにおいて、サービスドキュメントを参照して、カバー率のテスト、関連する更新状況のテスト、npmバージョンの使用、ISSUEなどのコード品質情報を提供する.