RFC9562(공식적으로 RFC4122) UUID 생성을 위해
uuid
명령줄 유틸리티 포함메모
w> uuid@11
이제 사용할 수 있습니다. 자세한 내용은 변경 로그를 참조하세요. 요약:
@types/uuid
제거).v1()
, v6()
및 v7()
에 대해 arg options
이 해석되는 방식이 미묘하게 변경되었습니다. 세부정보 보기Uint8Array
입니다. ( parse()
, stringify()
호출자 또는 v1()
- v7()
에 option#buf
인수를 전달하는 호출자에게 영향을 미칠 수 있습니다.) 1. 설치
npm install uuid
2. UUID 생성
ESM 구문(명명된 내보내기를 사용해야 함):
import { v4 as uuidv4 } from 'uuid' ;
uuidv4 ( ) ; // ⇨ '9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d'
... CommonJS:
const { v4 : uuidv4 } = require ( 'uuid' ) ;
uuidv4 ( ) ; // ⇨ '1b9d6bcd-bbfd-4b2d-9b5d-ab8dfbbd4bed'
타임스탬프 UUID, 네임스페이스 UUID 및 기타 옵션에 대해서는 다음에서 읽어보세요.
uuid.NIL | nil UUID 문자열(모두 0) | [email protected] 의 새로운 기능 |
uuid.MAX | 최대 UUID 문자열(모두 1) | [email protected] 의 새로운 기능 |
uuid.parse() | UUID 문자열을 바이트 배열로 변환 | [email protected] 의 새로운 기능 |
uuid.stringify() | 바이트 배열을 UUID 문자열로 변환 | [email protected] 의 새로운 기능 |
uuid.v1() | 버전 1(타임스탬프) UUID 생성 | |
uuid.v1ToV6() | 버전 1 UUID에서 버전 6 UUID 생성 | uuid@10 의 새로운 기능 |
uuid.v3() | 버전 3(MD5가 포함된 네임스페이스) UUID 생성 | |
uuid.v4() | 버전 4(임의) UUID 생성 | |
uuid.v5() | 버전 5(SHA-1이 포함된 네임스페이스) UUID 생성 | |
uuid.v6() | 버전 6(타임스탬프, 재정렬) UUID 생성 | uuid@10 의 새로운 기능 |
uuid.v6ToV1() | 버전 6 UUID에서 버전 1 UUID 생성 | uuid@10 의 새로운 기능 |
uuid.v7() | 버전 7(Unix Epoch 시간 기반) UUID 생성 | uuid@10 의 새로운 기능 |
uuid.v8() | "의도적으로 비워두었습니다" | |
uuid.validate() | 문자열을 테스트하여 유효한 UUID인지 확인하세요. | [email protected] 의 새로운 기능 |
uuid.version() | UUID의 RFC 버전 감지 | [email protected] 의 새로운 기능 |
nil UUID 문자열(모두 0)입니다.
예:
import { NIL as NIL_UUID } from 'uuid' ;
NIL_UUID ; // ⇨ '00000000-0000-0000-0000-000000000000'
최대 UUID 문자열(모두 1)입니다.
예:
import { MAX as MAX_UUID } from 'uuid' ;
MAX_UUID ; // ⇨ 'ffffffff-ffff-ffff-ffff-ffffffffffff'
UUID 문자열을 바이트 배열로 변환
str | 유효한 UUID String |
보고 | Uint8Array[16] |
던진다 | str 유효한 UUID가 아닌 경우 TypeError |
메모
parse()
및 stringify()
에서 사용되는 바이트 배열의 값 순서는 UUID 문자열에서 16진수 쌍의 왼쪽 ↠ 오른쪽 순서를 따릅니다. 아래 예와 같습니다.
예:
import { parse as uuidParse } from 'uuid' ;
// Parse a UUID
uuidParse ( '6ec0bd7f-11c0-43da-975e-2a8ad9ebae0b' ) ; // ⇨
// Uint8Array(16) [
// 110, 192, 189, 127, 17,
// 192, 67, 218, 151, 94,
// 42, 138, 217, 235, 174,
// 11
// ]
바이트 배열을 UUID 문자열로 변환
arr | 0-255 사이의 16개 값( offset 에서 시작)으로 구성된 Array 과 같은 컬렉션입니다. |
[ offset = 0] | Number 배열의 시작 인덱스 |
보고 | String |
던진다 | 유효한 UUID 문자열을 생성할 수 없는 경우 TypeError |
메모
parse()
및 stringify()
에서 사용되는 바이트 배열의 값 순서는 UUID 문자열에서 16진수 쌍의 왼쪽 ↠ 오른쪽 순서를 따릅니다. 아래 예와 같습니다.
예:
import { stringify as uuidStringify } from 'uuid' ;
const uuidBytes = Uint8Array . of (
0x6e ,
0xc0 ,
0xbd ,
0x7f ,
0x11 ,
0xc0 ,
0x43 ,
0xda ,
0x97 ,
0x5e ,
0x2a ,
0x8a ,
0xd9 ,
0xeb ,
0xae ,
0x0b
) ;
uuidStringify ( uuidBytes ) ; // ⇨ '6ec0bd7f-11c0-43da-975e-2a8ad9ebae0b'
RFC 버전 1(타임스탬프) UUID 생성
[ options ] | 다음 속성 중 하나 이상을 가진 Object : |
[ options.node = (random) ] | 바이트 값의 Array[6] 인 RFC "노드" 필드(4.1.6 기준) |
[ options.clockseq = (random) ] | 0 - 0x3fff 사이의 Number 로 표시되는 RFC "클럭 시퀀스" |
[ options.msecs = (current time) ] | RFC "타임스탬프" 필드(밀리초 Number , unix epoch) |
[ options.nsecs = 0 ] | RFC "타임스탬프" 필드( msecs 에 추가할 나노초 Number , 0-10,000이어야 함) |
[ options.random = (random) ] | 위의 다른 필드를 생성하는 데 사용되는 16개의 임의 바이트(0-255) Array |
[ options.rng ] | options.random 대신 16개의 임의 바이트(0-255) Array 반환하는 Function 입니다. |
[ buffer ] | Array | Buffer 지정된 경우 UUID는 offset 에서 시작하여 여기에 바이트 형식으로 기록됩니다. |
[ offset = 0] | buffer 에 UUID 바이트 쓰기를 시작하는 Number 인덱스 |
보고 | buffer 지정되지 않은 경우 UUID String , 그렇지 않으면 buffer 반환합니다. |
던진다 | 10M UUID/초를 초과하여 요청하면 Error |
메모
기본 노드 ID(UUID의 마지막 12자리)는 프로세스 시작 시 무작위로 한 번 생성된 다음 프로세스 기간 동안 변경되지 않고 유지됩니다.
메모
options.random
및 options.rng
는 v1()
에 대한 첫 번째 호출에서만 의미가 있으며 내부 node
및 clockseq
필드를 초기화하기 위해 전달될 수 있습니다.
예:
import { v1 as uuidv1 } from 'uuid' ;
uuidv1 ( ) ; // ⇨ '2c5ea4c0-4067-11e9-9bdd-2b0d7b3dcb6d'
options
사용 예:
import { v1 as uuidv1 } from 'uuid' ;
const options = {
node : Uint8Array . of ( 0x01 , 0x23 , 0x45 , 0x67 , 0x89 , 0xab ) ,
clockseq : 0x1234 ,
msecs : new Date ( '2011-11-01' ) . getTime ( ) ,
nsecs : 5678 ,
} ;
uuidv1 ( options ) ; // ⇨ '710b962e-041c-11e1-9234-0123456789ab'
UUID를 버전 1에서 버전 6으로 변환
import { v1ToV6 } from 'uuid' ;
v1ToV6 ( '92f62d9e-22c4-11ef-97e9-325096b39f47' ) ; // ⇨ '1ef22c49-2f62-6d9e-97e9-325096b39f47'
RFC 버전 3(MD5가 포함된 네임스페이스) UUID 생성
API는 v5()
와 동일하지만 대신 "v3"을 사용합니다.
중요한
RFC에 따르면 " 이전 버전과의 호환성이 문제가 되지 않으면 SHA-1 [버전 5]가 선호됩니다 ."
RFC 버전 4(임의) UUID 생성
[ options ] | 다음 속성 중 하나 이상을 가진 Object : |
[ options.random ] | 16개의 임의 바이트 Array (0-255) |
[ options.rng ] | options.random 대신 16개의 임의 바이트(0-255) Array 반환하는 Function 입니다. |
[ buffer ] | Array | Buffer 지정된 경우 UUID는 offset 에서 시작하여 여기에 바이트 형식으로 기록됩니다. |
[ offset = 0] | buffer 에 UUID 바이트 쓰기를 시작하는 Number 인덱스 |
보고 | buffer 지정되지 않은 경우 UUID String , 그렇지 않으면 buffer 반환합니다. |
예:
import { v4 as uuidv4 } from 'uuid' ;
uuidv4 ( ) ; // ⇨ '9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d'
사전 정의된 random
값을 사용하는 예:
import { v4 as uuidv4 } from 'uuid' ;
const v4options = {
random : Uint8Array . of (
0x10 ,
0x91 ,
0x56 ,
0xbe ,
0xc4 ,
0xfb ,
0xc1 ,
0xea ,
0x71 ,
0xb4 ,
0xef ,
0xe1 ,
0x67 ,
0x1c ,
0x58 ,
0x36
) ,
} ;
uuidv4 ( v4options ) ; // ⇨ '109156be-c4fb-41ea-b1b4-efe1671c5836'
RFC 버전 5(SHA-1이 포함된 네임스페이스) UUID 생성
name | String | Array |
namespace | String | Array[16] 네임스페이스 UUID |
[ buffer ] | Array | Buffer 지정된 경우 UUID는 offset 에서 시작하여 여기에 바이트 형식으로 기록됩니다. |
[ offset = 0] | buffer 에 UUID 바이트 쓰기를 시작하는 Number 인덱스 |
보고 | buffer 지정되지 않은 경우 UUID String , 그렇지 않으면 buffer 반환합니다. |
메모
RFC DNS
및 URL
네임스페이스는 v5.DNS
및 v5.URL
로 제공됩니다.
사용자 정의 네임스페이스의 예:
import { v5 as uuidv5 } from 'uuid' ;
// Define a custom namespace. Readers, create your own using something like
// https://www.uuidgenerator.net/
const MY_NAMESPACE = '1b671a64-40d5-491e-99b0-da01ff1f3341' ;
uuidv5 ( 'Hello, World!' , MY_NAMESPACE ) ; // ⇨ '630eb68f-e0fa-5ecc-887a-7c7a62614681'
RFC URL
네임스페이스의 예:
import { v5 as uuidv5 } from 'uuid' ;
uuidv5 ( 'https://www.w3.org/' , uuidv5 . URL ) ; // ⇨ 'c106a26a-21bb-5538-8bf2-57095d1976c1'
RFC 버전 6(타임스탬프, 재정렬됨) UUID 생성
이 메소드는 uuid.v1()과 동일한 인수를 사용합니다.
import { v6 as uuidv6 } from 'uuid' ;
uuidv6 ( ) ; // ⇨ '1e940672-c5ea-64c0-9b5d-ab8dfbbd4bed'
options
사용 예:
import { v6 as uuidv6 } from 'uuid' ;
const options = {
node : [ 0x01 , 0x23 , 0x45 , 0x67 , 0x89 , 0xab ] ,
clockseq : 0x1234 ,
msecs : new Date ( '2011-11-01' ) . getTime ( ) ,
nsecs : 5678 ,
} ;
uuidv6 ( options ) ; // ⇨ '1e1041c7-10b9-662e-9234-0123456789ab'
UUID를 버전 6에서 버전 1로 변환
import { v6ToV1 } from 'uuid' ;
v6ToV1 ( '1ef22c49-2f62-6d9e-97e9-325096b39f47' ) ; // ⇨ '92f62d9e-22c4-11ef-97e9-325096b39f47'
RFC 버전 7(임의) UUID 생성
[ options ] | 다음 속성 중 하나 이상을 가진 Object : |
[ options.msecs = (current time) ] | RFC "타임스탬프" 필드(밀리초 Number , unix epoch) |
[ options.random = (random) ] | 위의 다른 필드를 생성하는 데 사용되는 16개의 임의 바이트(0-255) Array |
[ options.rng ] | options.random 대신 16개의 임의 바이트(0-255) Array 반환하는 Function 입니다. |
[ options.seq = (random) ] | 0 - 0xffffffff 사이의 32비트 시퀀스 Number . 이는 동일한 밀리초 시간 간격 내에 생성된 UUID의 고유성을 보장하는 데 도움이 되도록 제공될 수 있습니다. 기본값은 임의의 값입니다. |
[ buffer ] | Array | Buffer 지정된 경우 UUID는 offset 에서 시작하여 여기에 바이트 형식으로 기록됩니다. |
[ offset = 0] | buffer 에 UUID 바이트 쓰기를 시작하는 Number 인덱스 |
보고 | buffer 지정되지 않은 경우 UUID String , 그렇지 않으면 buffer 반환합니다. |
예:
import { v7 as uuidv7 } from 'uuid' ;
uuidv7 ( ) ; // ⇨ '01695553-c90c-705a-b56d-778dfbbd4bed'
"의도적으로 비워두었습니다"
메모
버전 8(실험적) UUID는 "실험적 또는 공급업체별 사용 사례용"입니다. RFC는 이에 대한 생성 알고리즘을 정의하지 않으므로 이 패키지는 v8()
메서드를 제공하지 않습니다. 그러나 validate()
및 version()
메서드는 이러한 UUID와 함께 작동합니다.
문자열을 테스트하여 유효한 UUID인지 확인하세요.
str | 유효성을 검사할 String |
보고 | 문자열이 유효한 UUID이면 true , 그렇지 않으면 false |
예:
import { validate as uuidValidate } from 'uuid' ;
uuidValidate ( 'not a UUID' ) ; // ⇨ false
uuidValidate ( '6ec0bd7f-11c0-43da-975e-2a8ad9ebae0b' ) ; // ⇨ true
validate
와 version
함께 사용하면 버전별 유효성 검사를 수행할 수 있습니다(예: v4 UUId에 대해서만 유효성 검사).
import { version as uuidVersion } from 'uuid' ;
import { validate as uuidValidate } from 'uuid' ;
function uuidValidateV4 ( uuid ) {
return uuidValidate ( uuid ) && uuidVersion ( uuid ) === 4 ;
}
const v1Uuid = 'd9428888-122b-11e1-b85c-61cd3cbb3210' ;
const v4Uuid = '109156be-c4fb-41ea-b1b4-efe1671c5836' ;
uuidValidateV4 ( v4Uuid ) ; // ⇨ true
uuidValidateV4 ( v1Uuid ) ; // ⇨ false
UUID의 RFC 버전 감지
str | 유효한 UUID String |
보고 | Number UUID의 RFC 버전입니다. |
던진다 | str 유효한 UUID가 아닌 경우 TypeError |
예:
import { version as uuidVersion } from 'uuid' ;
uuidVersion ( '45637ec4-c85f-11ea-87d0-0242ac130003' ) ; // ⇨ 1
uuidVersion ( '6ec0bd7f-11c0-43da-975e-2a8ad9ebae0b' ) ; // ⇨ 4
메모
이 메서드는 NIL
UUID에 대해 0
반환하고 MAX
UUID에 대해 15
반환합니다.
UUID는 uuid
사용하여 명령줄에서 생성할 수 있습니다.
$ npx uuid
ddeb27fb-d9a0-4624-be4d-4615062daed4
기본값은 버전 4 UUIDS를 생성하는 것이지만 다른 버전도 지원됩니다. 자세한 내용을 보려면 uuid --help
입력하세요.
$ npx uuid --help
Usage:
uuid
uuid v1
uuid v3 < name > < namespace uuid >
uuid v4
uuid v5 < name > < namespace uuid >
uuid v7
uuid --help
Note: < namespace uuid > may be " URL " or " DNS " to use the corresponding UUIDs
defined by RFC9562
options
타임스탬프 UUID 처리 uuid@11
이전에는 options
상태가 타임스탬프 기반 UUID( v1()
, v6()
및 v7()
메서드)의 고유성을 보장하는 데 사용되는 내부 상태를 방해할 수 있었습니다. uuid@11
부터 이 문제는 options
인수의 존재를 플래그로 사용하여 두 가지 가능한 동작 중에서 선택함으로써 해결되었습니다.
options
없음: 내부 상태를 활용하여 UUID 고유성을 향상합니다.options
사용: 내부 상태는 사용되지 않으며 대신 필요에 따라 적절한 기본값이 적용됩니다. 브라우저 : uuid
빌드는 최신 버전의 데스크톱 Chrome, Safari, Firefox 및 Edge에 대해 테스트되었습니다. 동일한 브라우저의 모바일 버전도 작동할 것으로 예상되지만 현재 테스트되지 않았습니다.
Node : uuid
빌드는 노드(LTS 릴리스)와 이전 버전에 대해 테스트됩니다. 예를 들어 node@18
은 유지 관리 모드이고 node@22
현재 LTS 릴리스입니다. 따라서 uuid
node@16
- node@22
지원합니다.
Typescript : 최근 2년 이내에 출시된 TS 버전을 지원합니다. 원천
react-native-get-random-values
설치uuid
전에 가져오세요. uuid
일부 다른 가져오기의 전이적 종속성으로 나타날 수도 있으므로 진입점에서 가장 먼저 react-native-get-random-values
가져오는 것이 가장 안전합니다. import 'react-native-get-random-values' ;
import { v4 as uuidv4 } from 'uuid' ;
README_js.md에서 생성된 마크다운