Für die Erstellung von RFC9562 (ehemals RFC4122) UUIDs
uuid
-BefehlszeilendienstprogrammNotiz
w> uuid@11
ist jetzt verfügbar: Weitere Informationen finden Sie im CHANGELOG. TL;DR:
@types/uuid
aus Ihren Abhängigkeiten).options
arg für v1()
, v6()
und v7()
. Siehe DetailsUint8Array
s. (Kann Auswirkungen auf Aufrufer von parse()
, stringify()
oder haben, die ein option#buf
-Argument an v1()
- v7()
übergeben.) 1. Installieren
npm install uuid
2. Erstellen Sie eine UUID
ESM-Syntax (muss benannte Exporte verwenden):
import { v4 as uuidv4 } from 'uuid' ;
uuidv4 ( ) ; // ⇨ '9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d'
... CommonJS:
const { v4 : uuidv4 } = require ( 'uuid' ) ;
uuidv4 ( ) ; // ⇨ '1b9d6bcd-bbfd-4b2d-9b5d-ab8dfbbd4bed'
Für Zeitstempel-UUIDs, Namespace-UUIDs und andere Optionen lesen Sie weiter ...
uuid.NIL | Die Null-UUID-Zeichenfolge (alles Nullen) | Neu in [email protected] |
uuid.MAX | Die maximale UUID-Zeichenfolge (alle Einsen) | Neu in [email protected] |
uuid.parse() | Konvertieren Sie die UUID-Zeichenfolge in ein Byte-Array | Neu in [email protected] |
uuid.stringify() | Konvertieren Sie ein Byte-Array in einen UUID-String | Neu in [email protected] |
uuid.v1() | Erstellen Sie eine UUID der Version 1 (Zeitstempel). | |
uuid.v1ToV6() | Erstellen Sie eine UUID der Version 6 aus einer UUID der Version 1 | Neu in uuid@10 |
uuid.v3() | Erstellen Sie eine UUID der Version 3 (Namespace mit MD5). | |
uuid.v4() | Erstellen Sie eine (zufällige) UUID der Version 4 | |
uuid.v5() | Erstellen Sie eine UUID der Version 5 (Namespace mit SHA-1). | |
uuid.v6() | Erstellen Sie eine UUID der Version 6 (Zeitstempel, neu angeordnet). | Neu in uuid@10 |
uuid.v6ToV1() | Erstellen Sie eine UUID der Version 1 aus einer UUID der Version 6 | Neu in uuid@10 |
uuid.v7() | Erstellen Sie eine UUID der Version 7 (zeitbasiert auf Unix Epoch). | Neu in uuid@10 |
uuid.v8() | „Absichtlich leer gelassen“ | |
uuid.validate() | Testen Sie eine Zeichenfolge, um festzustellen, ob es sich um eine gültige UUID handelt | Neu in [email protected] |
uuid.version() | Ermitteln Sie die RFC-Version einer UUID | Neu in [email protected] |
Die Null-UUID-Zeichenfolge (alles Nullen).
Beispiel:
import { NIL as NIL_UUID } from 'uuid' ;
NIL_UUID ; // ⇨ '00000000-0000-0000-0000-000000000000'
Die maximale UUID-Zeichenfolge (alle Einsen).
Beispiel:
import { MAX as MAX_UUID } from 'uuid' ;
MAX_UUID ; // ⇨ 'ffffffff-ffff-ffff-ffff-ffffffffffff'
Konvertieren Sie die UUID-Zeichenfolge in ein Byte-Array
str | Ein gültiger UUID- String |
kehrt zurück | Uint8Array[16] |
wirft | TypeError wenn str keine gültige UUID ist |
Notiz
Die Reihenfolge der Werte in den von parse()
und stringify()
verwendeten Byte-Arrays folgt der Reihenfolge links ↠ rechts der Hex-Paare in UUID-Strings. Wie im Beispiel unten gezeigt.
Beispiel:
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
// ]
Konvertieren Sie ein Byte-Array in einen UUID-String
arr | Array Sammlung von 16 Werten (beginnend mit offset ) zwischen 0 und 255. |
[ offset = 0] | Number Startindex im Array |
kehrt zurück | String |
wirft | TypeError wenn keine gültige UUID-Zeichenfolge generiert werden kann |
Notiz
Die Reihenfolge der Werte in den von parse()
und stringify()
verwendeten Byte-Arrays folgt der Reihenfolge links ↠ rechts der Hex-Paare in UUID-Strings. Wie im Beispiel unten gezeigt.
Beispiel:
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'
Erstellen Sie eine UUID der RFC-Version 1 (Zeitstempel).
[ options ] | Object mit einer oder mehreren der folgenden Eigenschaften: |
[ options.node = (random) ] | RFC-„Knoten“-Feld als Array[6] von Bytewerten (gemäß 4.1.6) |
[ options.clockseq = (random) ] | RFC „Taktsequenz“ als Number zwischen 0 – 0x3fff |
[ options.msecs = (current time) ] | RFC-Feld „Zeitstempel“ ( Number der Millisekunden, Unix-Epoche) |
[ options.nsecs = 0 ] | RFC-Feld „Zeitstempel“ ( Number der zu msecs hinzuzufügenden Nanosekunden, sollte zwischen 0 und 10.000 liegen) |
[ options.random = (random) ] | Array aus 16 Zufallsbytes (0–255), das zum Generieren anderer Felder oben verwendet wird |
[ options.rng ] | Alternative zu options.random , einer Function , die ein Array von 16 Zufallsbytes (0-255) zurückgibt. |
[ buffer ] | Array | Buffer Falls angegeben, wird die UUID hier in Byteform geschrieben, beginnend beim offset |
[ offset = 0] | Number , um mit dem Schreiben von UUID-Bytes in buffer zu beginnen |
kehrt zurück | UUID- String , wenn kein buffer angegeben ist, andernfalls wird buffer zurückgegeben |
wirft | Error , wenn mehr als 10 Mio. UUIDs/Sek. angefordert werden |
Notiz
Die Standardknoten-ID (die letzten 12 Ziffern der UUID) wird beim Prozessstart einmal zufällig generiert und bleibt dann für die Dauer des Prozesses unverändert.
Notiz
options.random
und options.rng
sind nur beim allerersten Aufruf von v1()
von Bedeutung, wo sie möglicherweise übergeben werden, um die internen node
und clockseq
Felder zu initialisieren.
Beispiel:
import { v1 as uuidv1 } from 'uuid' ;
uuidv1 ( ) ; // ⇨ '2c5ea4c0-4067-11e9-9bdd-2b0d7b3dcb6d'
Beispiel für die Verwendung 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'
Konvertieren Sie eine UUID von Version 1 in Version 6
import { v1ToV6 } from 'uuid' ;
v1ToV6 ( '92f62d9e-22c4-11ef-97e9-325096b39f47' ) ; // ⇨ '1ef22c49-2f62-6d9e-97e9-325096b39f47'
Erstellen Sie eine UUID der RFC-Version 3 (Namespace mit MD5).
Die API ist identisch mit v5()
, verwendet jedoch stattdessen „v3“.
Wichtig
Gemäß RFC: „ Wenn die Abwärtskompatibilität kein Problem darstellt, wird SHA-1 [Version 5] bevorzugt .“
Erstellen Sie eine UUID der RFC-Version 4 (zufällig).
[ options ] | Object mit einer oder mehreren der folgenden Eigenschaften: |
[ options.random ] | Array aus 16 Zufallsbytes (0-255) |
[ options.rng ] | Alternative zu options.random , einer Function , die ein Array von 16 Zufallsbytes (0-255) zurückgibt. |
[ buffer ] | Array | Buffer Falls angegeben, wird die UUID hier in Byteform geschrieben, beginnend beim offset |
[ offset = 0] | Number , um mit dem Schreiben von UUID-Bytes in buffer zu beginnen |
kehrt zurück | UUID- String , wenn kein buffer angegeben ist, andernfalls wird buffer zurückgegeben |
Beispiel:
import { v4 as uuidv4 } from 'uuid' ;
uuidv4 ( ) ; // ⇨ '9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d'
Beispiel mit vordefinierten 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'
Erstellen Sie eine UUID der RFC-Version 5 (Namespace mit SHA-1).
name | String | Array |
namespace | String | Array[16] Namespace-UUID |
[ buffer ] | Array | Buffer Falls angegeben, wird die UUID hier in Byteform geschrieben, beginnend beim offset |
[ offset = 0] | Number , um mit dem Schreiben von UUID-Bytes in buffer zu beginnen |
kehrt zurück | UUID- String , wenn kein buffer angegeben ist, andernfalls wird buffer zurückgegeben |
Notiz
Die RFC DNS
und URL
Namespaces sind als v5.DNS
und v5.URL
verfügbar.
Beispiel mit benutzerdefiniertem Namespace:
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'
Beispiel mit RFC URL
-Namespace:
import { v5 as uuidv5 } from 'uuid' ;
uuidv5 ( 'https://www.w3.org/' , uuidv5 . URL ) ; // ⇨ 'c106a26a-21bb-5538-8bf2-57095d1976c1'
Erstellen Sie eine UUID der RFC-Version 6 (Zeitstempel, neu angeordnet).
Diese Methode verwendet dieselben Argumente wie uuid.v1().
import { v6 as uuidv6 } from 'uuid' ;
uuidv6 ( ) ; // ⇨ '1e940672-c5ea-64c0-9b5d-ab8dfbbd4bed'
Beispiel für die Verwendung 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'
Konvertieren Sie eine UUID von Version 6 in Version 1
import { v6ToV1 } from 'uuid' ;
v6ToV1 ( '1ef22c49-2f62-6d9e-97e9-325096b39f47' ) ; // ⇨ '92f62d9e-22c4-11ef-97e9-325096b39f47'
Erstellen Sie eine UUID der RFC-Version 7 (zufällig).
[ options ] | Object mit einer oder mehreren der folgenden Eigenschaften: |
[ options.msecs = (current time) ] | RFC-Feld „Zeitstempel“ ( Number der Millisekunden, Unix-Epoche) |
[ options.random = (random) ] | Array aus 16 Zufallsbytes (0–255), das zum Generieren anderer Felder oben verwendet wird |
[ options.rng ] | Alternative zu options.random , einer Function , die ein Array von 16 Zufallsbytes (0-255) zurückgibt. |
[ options.seq = (random) ] | 32-Bit- Number zwischen 0 und 0xffffffff. Dies kann bereitgestellt werden, um die Eindeutigkeit von UUIDs sicherzustellen, die innerhalb desselben Millisekunden-Zeitintervalls generiert werden. Standard = Zufallswert. |
[ buffer ] | Array | Buffer Falls angegeben, wird die UUID hier in Byteform geschrieben, beginnend beim offset |
[ offset = 0] | Number , um mit dem Schreiben von UUID-Bytes in buffer zu beginnen |
kehrt zurück | UUID- String , wenn kein buffer angegeben ist, andernfalls wird buffer zurückgegeben |
Beispiel:
import { v7 as uuidv7 } from 'uuid' ;
uuidv7 ( ) ; // ⇨ '01695553-c90c-705a-b56d-778dfbbd4bed'
„Absichtlich leer gelassen“
Notiz
UUIDs der Version 8 (experimentell) sind „für experimentelle oder herstellerspezifische Anwendungsfälle“. Der RFC definiert für sie keinen Erstellungsalgorithmus, weshalb dieses Paket keine v8()
-Methode anbietet. Die Methoden validate()
und version()
funktionieren jedoch mit solchen UUIDs.
Testen Sie eine Zeichenfolge, um festzustellen, ob es sich um eine gültige UUID handelt
str | Zu validierende String |
kehrt zurück | true wenn string eine gültige UUID ist, andernfalls false |
Beispiel:
import { validate as uuidValidate } from 'uuid' ;
uuidValidate ( 'not a UUID' ) ; // ⇨ false
uuidValidate ( '6ec0bd7f-11c0-43da-975e-2a8ad9ebae0b' ) ; // ⇨ true
Wenn Sie validate
und version
zusammen verwenden, ist es möglich, eine Validierung pro Version durchzuführen, z. B. nur für v4-UUIds zu validieren.
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
Ermitteln Sie die RFC-Version einer UUID
str | Ein gültiger UUID- String |
kehrt zurück | Number Die RFC-Version der UUID |
wirft | TypeError wenn str keine gültige UUID ist |
Beispiel:
import { version as uuidVersion } from 'uuid' ;
uuidVersion ( '45637ec4-c85f-11ea-87d0-0242ac130003' ) ; // ⇨ 1
uuidVersion ( '6ec0bd7f-11c0-43da-975e-2a8ad9ebae0b' ) ; // ⇨ 4
Notiz
Diese Methode gibt 0
für die NIL
UUID und 15
für die MAX
-UUID zurück.
UUIDs können über die Befehlszeile mit uuid
generiert werden.
$ npx uuid
ddeb27fb-d9a0-4624-be4d-4615062daed4
Standardmäßig werden UUIDS der Version 4 generiert, die anderen Versionen werden jedoch unterstützt. Geben Sie uuid --help
für Details ein:
$ 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
Behandlung für Zeitstempel-UUIDs Vor uuid@11
war es möglich, dass der options
den internen Status störte, der verwendet wurde, um die Eindeutigkeit zeitstempelbasierter UUIDs sicherzustellen (die Methoden v1()
, v6()
und v7()
). Beginnend mit uuid@11
wurde dieses Problem behoben, indem das Vorhandensein des options
als Flag verwendet wurde, um zwischen zwei möglichen Verhaltensweisen zu wählen:
options
: Der interne Status wird verwendet, um die Eindeutigkeit der UUID zu verbessern.options
: Der interne Status wird NICHT verwendet und stattdessen werden bei Bedarf entsprechende Standardwerte angewendet. Browser : uuid
-Builds werden mit der neuesten Desktop-Version von Chrome, Safari, Firefox und Edge getestet. Es wird erwartet, dass mobile Versionen dieser Browser funktionieren, sie werden jedoch derzeit nicht getestet.
Knoten : uuid
Builds werden gegen Knoten (LTS-Versionen) plus eine vorherige getestet. Beispielsweise befindet sich node@18
im Wartungsmodus und node@22
ist die aktuelle LTS-Version. uuid
unterstützt also node@16
- node@22
.
Typescript : TS-Versionen, die in den letzten zwei Jahren veröffentlicht wurden, werden unterstützt. Quelle
react-native-get-random-values
uuid
. Da uuid
möglicherweise auch als transitive Abhängigkeit einiger anderer Importe erscheint, ist es am sichersten react-native-get-random-values
einfach als allererstes in Ihren Einstiegspunkt zu importieren: import 'react-native-get-random-values' ;
import { v4 as uuidv4 } from 'uuid' ;
Markdown generiert aus README_js.md von