개인 npm 서버 구축

5981 단어 npm

왜 npm 개인 창고가 필요합니까?


npm 개인 창고는 회사 내부 서버에 위탁 관리되는데 왜 필요합니까?
  • 회사 코드 보호
  • 내부의 UI 구성 요소나 도구를 사용하면 내부자가 쉽게 사용할 수 있습니다
  • 내부 네트워크 접근이 빠르다
  • 내부 유지보수로 게시와 삭제 권한을 제어할 수 있습니다

  • 솔루션 조사 연구

  • Sinopia는 @ 기호가 있는 가방을 다운로드할 수 없으며, 창고는 일년 내내 유지 보수가 없어서 이미 사용되지 않습니다
  • cnpm는 계속 유지하고 있으나,release는 계속 업데이트되지 않았습니다
  • verdacciofork은sinopia에서 적극적으로 유지하고 스타가 가장 많다
  • 넥서스자바는 사복을 많이 쓴다

  • github stars
    lastest realease
    lastest commit
    비고
    Sinopia
    5.4k
    2015-6-7
    2015-10-3
    더 이상 유지 관리 안 함
    cnpm
    3.4k
    2014-10-9
    2021-7-6
    -
    verdaccio
    11.9k
    2021-7-15
    2021-7-21
    -
    상기 데이터는 2021-7-23에 집계되었다
    verdaccio가 세 가지 차원에서 먼지를 제거하는 것을 볼 수 있습니다. verdaccio를 선택하기로 결정했습니다. 이것은 nodejs가 작성한 것으로 앞부분과 가장 가깝습니다.

    구축 과정


    신청 서버, 설치 환경


    신청하면 xshell6로 ssh 로그인합니다.외부 네트워크, node 설치를 포함한 테스트 및 설치 환경이 필요합니다. 여기에서 유행 버전 v14.17.3(LTS)을 선택하십시오.
    nodejs download
    현재 장기 지원: 14.17.3 (npm 6.14.13 포함)
    tips: nvm를 사용해서 설치에 성공했지만 네트워크 문제로 node를 설치하지 못해 포기했습니다.

    verdaccio 사용하기


    verdaccio
    설치
    npm install -g verdaccio

    프로파일 수정
    cd ~/.config/verdaccio
    vim config.yaml
    #  
    vim ~/.config/verdaccio/config.yaml
      1 #
      2 # This is the default config file. It allows all users to do anything,
      3 # so don't use it on production systems.
      4 #
      5 # Look here for more config file examples:
      6 # https://github.com/verdaccio/verdaccio/tree/master/conf
      7 #
      8 
      9 # path to a directory with all packages
     10 storage: ./storage # npm 
     11 # path to a directory with plugins to include
     12 plugins: ./plugins
     13 
     14 web:
     15   title: Verdaccio
     16   # comment out to disable gravatar support
     17   # gravatar: false
     18   # by default packages are ordercer ascendant (asc|desc)
     19   # sort_packages: asc
     20   # convert your UI to the dark side
     21   # darkMode: true
     22   # logo: http://somedomain/somelogo.png
     23   # favicon: http://somedomain/favicon.ico | /path/favicon.ico
     24 
     25 # translate your registry, api i18n not available yet
     26 # i18n:
     27 # list of the available translations https://github.com/verdaccio/ui/tree/master/i18n/translations
     28 #   web: en-US
     29 
     30 auth:
     31   htpasswd:
     32     file: ./htpasswd
     33     # Maximum amount of users allowed to register, defaults to "+inf".
     34     # You can set this to -1 to disable registration.
     35     # max_users: 1000
     36 
     37 # a list of other known repositories we can talk to
     38 uplinks:
     39   npmjs:
     40     url: http://registry.npm.taobao.org/ #  npm , , taobao npm 
     41 
     42 packages:
     43   '@*/*':
     44     # scoped packages
     45     access: $all
     46     publish: $authenticated
     47     unpublish: $authenticated
     48     proxy: npmjs
     49 
     50   '**':
     51     # allow all users (including non-authenticated users) to read and
     52        # publish all packages
     53     #
     54     # you can specify usernames/groupnames (depending on your auth plugin)
     55     # and three keywords: "$all", "$anonymous", "$authenticated"
     56     access: $all
     57 
     58     # allow all known users to publish/publish packages
     59     # (anyone can register by default, remember?)
     60     publish: $authenticated
     61     unpublish: $authenticated
     62 
     63     # if package is not available locally, proxy requests to 'npmjs' registry
     64     proxy: npmjs
     65 
     66 # You can specify HTTP/1.1 server keep alive timeout in seconds for incoming connections.
     67 # A value of 0 makes the http server behave similarly to Node.js versions prior to 8.0.0, which did not have a keep-alive timeout.
     68 # WORKAROUND: Through given configuration you can workaround following issue https://github.com/verdaccio/verdaccio/issues/301. Set to 0 in case     60 is not enough.
     69 server:
     70   keepAliveTimeout: 60
     71 
     72 middlewares:
     73   audit:
     74     enabled: true
     75 
     76 # log settings
     77 logs: { type: stdout, format: pretty, level: http }
     78 
     79 # listen  , 
     80 listen: 0.0.0.0:4873
     81 
     82 #experiments:
     83 #  # support for npm token command
     84 #  token: false
     85 #  # disable writing body size to logs, read more on ticket 1912
     86 #  bytesin_off: false
     87 #  # enable tarball URL redirect for hosting tarball with a different server, the tarball_url_redirect can be a template string
     88 #  tarball_url_redirect: 'https://mycdn.com/verdaccio/${packageName}/${filename}'
     89 #  # the tarball_url_redirect can be a function, takes packageName and filename and returns the url, when working with a js configuration file
     90 #  tarball_url_redirect(packageName, filename) {
     91 #    const signedUrl = // generate a signed url
     92 #    return signedUrl;
     93 #  }
     94 
     95 # This affect the web and api (not developed yet)
     96 #i18n:
     97 #web: en-US
    

    수정할 수 있는 점은:storage,uplinks.npmjs.url、listen
    또한 개발자가 가방을 마음대로 삭제하지 못하게 하면 unpublish를 특정 계정으로 설정할 수 있습니다.
    부팅
    verdaccio

    외부 네트워크에서 액세스할 수 있습니다http://ip:4873
    pm2 데몬 프로세스
    ssh를 종료한 후 서비스가 정상적일 수 있도록pm2를 사용하여 프로세스를 지킬 수 있습니다.
    pm2
    pm2 start verdaccio

    일반pm2 명령
    pm2 list/ls #  pm2 
    pm2 start  #  , 
    pm2 stop 
    pm2 restart 
    pm2 reload 
    pm2 delete 

    좋은 웹페이지 즐겨찾기