npm
이는 Algolia 인덱스 복제 프로세스에 대한 장애 복구 npm 레지스트리입니다. 모든 npm 패키지를 Algolia 인덱스에 복제하고 최신 상태로 유지합니다. 복제 상태는 Algolia 인덱스 설정에 저장됩니다.
복제는 항상 실행 중이어야 합니다. Algolia 인덱스당 하나의 인스턴스만 동시에 실행되어야 합니다 . 프로세스가 실패하면 다시 시작하면 기억하는 마지막 지점에서 복제 프로세스가 계속됩니다.
Algolia 색인은 현재 일부 선택된 프로젝트(예: Yarnpkg.com,codesandbox.io, jsdelivr.com 등)에서 무료로 사용됩니다.
이 색인을 프로젝트에 포함하려면 Algolia Support에서 지원 요청을 작성하세요.
이 제품은 커뮤니티를 위한 오픈 소스 제품이며 Algolia에서는 지원하지 않습니다.
자격을 갖추려면 프로젝트가 다음 요구 사항을 충족해야 합니다.
코드나 공개 도커 이미지를 사용하여 직접 실행할 수도 있습니다(2021년 9월 현재 ~3M 레코드 x4가 생성됩니다).
모든 단일 NPM 패키지에 대해 Algolia 색인에 기록을 생성합니다. 결과 레코드에는 다음과 같은 스키마가 있습니다.
{
name : 'babel-core' ,
downloadsLast30Days : 10978749 ,
downloadsRatio : 0.08310651682685861 ,
humanDownloadsLast30Days : '11m' ,
jsDelivrHits : 11684192 ,
popular : true ,
version : '6.26.0' ,
versions : {
// [...]
'7.0.0-beta.3' : '2017-10-15T13:12:35.166Z' ,
} ,
tags : {
latest : '6.26.0' ,
old : '5.8.38' ,
next : '7.0.0-beta.3' ,
} ,
description : 'Babel compiler core.' ,
dependencies : {
'babel-code-frame' : '^6.26.0' ,
// [...]
} ,
devDependencies : {
'babel-helper-fixtures' : '^6.26.0' ,
// [...]
} ,
repository : {
url : 'https://github.com/babel/babel/tree/master/packages/babel-core' ,
host : 'github.com' ,
user : 'babel' ,
project : 'babel' ,
path : '/tree/master/packages/babel-core' ,
branch : 'master' ,
} ,
readme : '# babel-corenn> Babel compiler core.nnn [... truncated at 200kb]' ,
owner : {
// either GitHub owner or npm owner
name : 'babel' ,
avatar : 'https://github.com/babel.png' ,
link : 'https://github.com/babel' ,
} ,
deprecated : 'Deprecated' , // This field will be removed, please use `isDeprecated` instead
isDeprecated : true ,
deprecatedReason : 'Deprecated' ,
isSecurityHeld : false , // See https://github.com/npm/security-holder
badPackage : false ,
homepage : 'https://babeljs.io/' ,
license : 'MIT' ,
keywords : [
'6to5' ,
'babel' ,
'classes' ,
'const' ,
'es6' ,
'harmony' ,
'let' ,
'modules' ,
'transpile' ,
'transpiler' ,
'var' ,
'babel-core' ,
'compiler' ,
] ,
created : 1424009748555 ,
modified : 1508833762239 ,
lastPublisher : {
name : 'hzoo' ,
email : '[email protected]' ,
avatar : 'https://gravatar.com/avatar/851fb4fa7ca479bce1ae0cdf80d6e042' ,
link : 'https://www.npmjs.com/~hzoo' ,
} ,
owners : [
{
email : '[email protected]' ,
name : 'thejameskyle' ,
avatar : 'https://gravatar.com/avatar/8a00efb48d632ae449794c094f7d5c38' ,
link : 'https://www.npmjs.com/~thejameskyle' ,
} ,
// [...]
] ,
lastCrawl : '2017-10-24T08:29:24.672Z' ,
dependents : 3321 ,
types : {
ts : 'definitely-typed' , // definitely-typed | included | false
definitelyTyped : '@types/babel__core' ,
} ,
moduleTypes : [ 'unknown' ] , // esm | cjs | none | unknown
styleTypes : [ 'none' ] , // file extensions like css, less, scss or none if no style files present
humanDependents : '3.3k' ,
changelogFilename : null , // if babel-core had a changelog, it would be the raw GitHub url here
objectID : 'babel-core' ,
// the following fields are considered internal and may change at any time
_downloadsMagnitude : 8 ,
_jsDelivrPopularity : 5 ,
_popularName : 'babel-core' ,
_searchInternal : {
alternativeNames : [
// alternative versions of this name, to show up on confused searches
] ,
} ,
}
Algolia의 순위 알고리즘이 어떻게 작동하는지 자세히 알아보려면 이 블로그 게시물을 읽어보세요.
속성의 하위 집합만 사용하도록 검색을 제한하고 있습니다.
_popularName
name
description
keywords
owner.name
owners.name
Algolia는 기본 접두사 검색 기능(단어 시작 부분만 일치)을 제공합니다. owner.name
및 owners.name
속성에 대해서는 이 기능이 비활성화됩니다.
Algolia는 기본 오타 허용 오차를 제공합니다.
Algolia의 optionalFacetFilters
기능을 사용하여 패키지 이름과 정확히 일치하는 항목이 항상 결과 위에 표시되도록 합니다.
각 패키지에 대해 지난 30일 동안의 다운로드 수를 Algolia의 customRanking
설정으로 사용합니다. 이는 서로 동일한 텍스트 관련성을 갖는 결과를 정렬하는 데 사용됩니다.
예를 들어 babel-core
및 babel-messages
모두 일치하는 babel
검색하세요. 텍스트 관련성 관점에서 보면 두 패키지는 정확히 같은 방식으로 일치합니다. 이 경우 Algolia는 customRanking
설정을 사용하므로 지난 30일 동안 다운로드 수가 가장 많은 패키지를 먼저 배치합니다.
일부 패키지는 다른 패키지보다 "더 많이" 다운로드된 경우 인기 있는 것으로 간주됩니다. 현재 다음 중 하나에 해당하는 경우 인기 있는 패키지로 간주됩니다.
0.005%
이상을 차지하며, 이 popular
플래그는 인기가 없는 기록보다 일부 기록을 높이는 데에도 사용됩니다.
yarn
apiKey=... yarn start
특정 지점(또는 처음부터)에서 다시 시작하려면:
seq=0 apiKey=... yarn start
이는 다음과 같은 이유로 npm 레지스트리를 완전히 다시 동기화하려는 경우에 유용합니다.
seq
CouchDB 용어의 변경 순서를 나타냅니다.
이 프로젝트의 목표는 다음과 같습니다.
프로세스가 seq=0
으로 시작되는 경우:
복제와 감시는 다음과 같은 이유로 분리됩니다.
CONTRIBUTING.md를 참조하세요.