
Security News
The Changelog Podcast: Practical Steps to Stay Safe on npm
Learn the essential steps every developer should take to stay secure on npm and reduce exposure to supply chain attacks.
@vkontakte/icons-scripts
Advanced tools
ΠΡΠΎΡ ΠΏΠ°ΠΊΠ΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠΊΡΠΈΠΏΡΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠ΅ Π΄Π»Ρ ΡΠ±ΠΎΡΠΊΠΈ SVG-ΠΈΠΊΠΎΠ½ΠΎΠΊ Π² React-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ.
ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΎΠ²Π°ΡΡ ΠΈΠΊΠΎΠ½ΠΊΠΈ ΠΏΠΎ ΠΏΠ°ΠΏΠΊΠ°ΠΌ: Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΏΠ°ΠΏΠΊΠ΅-ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΈΠΊΠΎΠ½ΠΊΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π·Π΄Π΅ΡΡ ΠΏΠΎΠΊΠ°Π·Π°Π½Ρ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΈ ΠΈΠΊΠΎΠ½ΠΎΠΊ ΠΏΠΎ ΡΠ°Π·ΠΌΠ΅ΡΡ, Π° ΡΠ°ΠΊΠΆΠ΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½Π°Ρ ΠΏΠ°ΠΏΠΊΠ° Unsorted Ρ ΠΈΠΊΠΎΠ½ΠΊΠ°ΠΌΠΈ, Π½Π΅ ΠΏΠΎΠ΄ΠΎΡΠ΅Π΄ΡΠΈΠΌΠΈ ΠΊ Π΄ΡΡΠ³ΠΈΠΌ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΡΠΌΠΈ.
ΠΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ ΠΏΠ°ΠΏΠΊΠ° svg, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ ΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½Ρ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΈ.
src/
svg/
12/
add_12.svg
smile_12.svg
28/
add_28.svg
smile_28.svg
Unsorted/
icon_with_different_sizes.svg
ΠΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ Π½ΡΠΆΠ½ΡΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ:
{
"name": "@scope/react-icons-library",
"version": "0.0.0",
"files": ["dist", "src/svg"],
"type": "module",
"main": "dist/index.js",
"module": "dist/index.js",
"typings": "dist/typings/index.d.ts",
"exports": {
".": {
"types": "./dist/typings/index.d.ts",
"default": "./dist/index.js"
}
},
"scripts": {
"build-icons": "node scripts/build-icons.js"
},
"dependencies": {
"@vkontakte/icons-sprite": "^3.0.0",
"@swc/helpers": "^0.5.15"
},
"peerDependencies": {
"react": "^19.0.0"
},
"devDependencies": {
"@types/react": "^19.0.0",
"@vkontakte/icons-scripts": "latest",
"react": "^19.0.0"
}
}
scripts/build-icons.js:
import { generateIcons } from '@vkontakte/icons-scripts';
generateIcons({
srcDirectory: './src',
distDirectory: './dist',
extraCategories: ['Unsorted', 'Foo'],
deprecatedIcons: {
deprecated_icon_24: null,
deprecated_icon_28: 'replacement_icon_28',
},
});
srcDirectory {string}
ΠΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ Ρ ΠΈΠΊΠΎΠ½ΠΊΠ°ΠΌΠΈ. Π Π½Π΅ΠΉ Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ ΠΏΠ°ΠΏΠΊΠ° svg Ρ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΡΠΌΠΈ.
distDirectory {string}
ΠΠ°ΠΏΠΊΠ° Π΄Π»Ρ ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ
ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ².
extraCategories {string[]}
ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΈ. ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΡΠΊΡΠΈΠΏΡ Π±ΡΠ΄Π΅Ρ ΠΈΡΠΊΠ°ΡΡ ΠΈΠΊΠΎΠ½ΠΊΠΈ Π² svg/[0-9][0-9] ΠΈ svg/Unsorted.
ΠΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΠ°ΡΡΠ΅ΡΠ½ΠΎΠΌ Π΄Π»Ρ glob.
deprecatedIcons {Record<string, string | null>>}
Π‘ΠΏΠΈΡΠΎΠΊ ΡΡΡΠ°ΡΠ΅Π²ΡΠΈΡ
ΠΈΠΊΠΎΠ½ΠΎΠΊ.
ΠΠ±ΡΠ΅ΠΊΡ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ β ΡΡΠΎ ΠΈΠΌΡ ΡΠ°ΠΉΠ»Π° ΡΡΡΠ°ΡΠ΅Π²ΡΠ΅ΠΉ ΠΈΠΊΠΎΠ½ΠΊΠΈ, Π° Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΡΠΎΠ³ΠΎ ΡΠ²ΠΎΠΉΡΡΠ²Π° β ΠΈΠΌΡ ΡΠ°ΠΉΠ»Π° ΠΈΠΊΠΎΠ½ΠΊΠΈ Π½Π° Π·Π°ΠΌΠ΅Π½Ρ ΡΡΡΠ°ΡΠ΅Π²ΡΠ΅ΠΉ (ΠΈΠ»ΠΈ null, Π΅ΡΠ»ΠΈ ΡΠ°ΠΊΠΎΠΉ Π½Π΅Ρ).
ΠΠΎΠΆΠ΅Ρ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡΡΡ ΠΏΠΎΡΡΠ΅Π±Π½ΠΎΡΡΡ Π² ΠΏΠΎΠΊΡΠ°ΡΠΊΠ΅ ΡΠ°Π·Π½ΡΡ
ΡΠ°ΡΡΠ΅ΠΉ ΠΈΠΊΠΎΠ½ΠΎΠΊ ΡΠ°Π·Π½ΡΠΌΠΈ ΡΠ²Π΅ΡΠ°ΠΌΠΈ,
Π΄Π»Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΡΡΠΎΠΉ Π·Π°Π΄Π°ΡΠΈ ΠΈΠ· ΠΊΠΎΡΠΎΠ±ΠΊΠΈ Π΄ΠΎΡΡΡΠΏΠ½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π½Π΅ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π°
ΠΏΠΎΠ΄ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² Π΄Π»Ρ Π±Π°Π·ΠΎΠ²ΠΎΠΉ ΠΈΠΊΠΎΠ½ΠΊΠΈ, Π½ΠΎ Π½ΡΠΆΠ½ΠΎ ΡΡΠΎΠ±Ρ ΠΊΠ°ΠΆΠ΄Π°Ρ ΡΠ°ΡΡΡ ΠΈΠΊΠΎΠ½ΠΊΠΈ ΠΈΠΌΠ΅Π»Π° part ΡΡΡΡΠΈΠΊΡ Π² Π½Π°Π·Π²Π°Π½ΠΈΠΈ ΡΠ²ΠΎΠ΅Π³ΠΎ ΡΠ°ΠΉΠ»Π°.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠ° ΠΈΠΊΠΎΠ½ΠΊΠ° Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°ΠΌΠ΅ΡΡ ΡΠΈΠ½Π΅Π³ΠΎ ΡΠ²Π΅ΡΠ° Ρ ΠΏΠ΅ΡΠ΅ΡΠ΅ΡΠΊΠ½ΡΡΠΎΠΉ ΠΊΡΠ°ΡΠ½ΠΎΠΉ Π»ΠΈΠ½ΠΈΠ΅ΠΉ, ΠΏΡΠΈ ΡΡΠΎΠΌ ΡΠ²Π΅ΡΠ° ΠΌΠΎΠ³ΡΡ ΠΌΠ΅Π½ΡΡΡΡΡ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈ ΠΈ Π½Π΅ Π·Π°ΡΠΈΠ²Π°ΡΡΡΡ Π² ΡΠ°ΠΌ svg ΡΠ°ΠΉΠ»:
ΠΠ°ΡΠ΅Π·Π°Π΅ΠΌ ΠΈΠΊΠΎΠ½ΠΊΡ Π½Π° Π½ΡΠΆΠ½ΡΠ΅ ΡΠ°ΡΡΠΈ:
ΠΡΠΈΠ΄ΡΠΌΡΠ²Π°Π΅ΠΌ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Π΄Π»Ρ Π±Π°Π·ΠΎΠ²ΠΎΠΉ ΠΈΠΊΠΎΠ½ΠΊΠΈ, Π² Π½Π°ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ videocam,
ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΡΡΠ° ΠΈΠΊΠΎΠ½ΠΊΠ° ΡΠΎΠ±ΠΈΡΠ°Π΅ΡΡΡ ΠΏΠΎ ΡΠ°ΡΡΡΠΌ, Π½ΡΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ part ΡΡΡΡΠΈΠΊΡ Π² Π΅Π΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅: videocam_part,
ΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ ΡΠ°ΠΌ ΡΠ°Π·ΠΌΠ΅Ρ ΠΈΠΊΠΎΠ½ΠΊΠΈ: videocam_part_28.svg.
ΠΡΠΈΠ΄ΡΠΌΡΠ²Π°Π΅ΠΌ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Π΄Π»Ρ ΡΠ°ΡΡΠΈ ΠΎΡ Π±Π°Π·ΠΎΠ²ΠΎΠΉ ΠΈΠΊΠΎΠ½ΠΊΠΈ, Π±Π°Π·ΠΎΠ²Π°Ρ ΠΈΠΊΠΎΠ½ΠΊΠ° Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ videocam,
ΡΠ°ΡΡΡ Ρ Π»ΠΈΠ½ΠΈΠ΅ΠΉ ΠΈΠΊΠΎΠ½ΠΊΠΈ ΠΌΡ Π½Π°Π·Π²Π°Π»ΠΈ slash: videocam_slash.
ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΡΡΠ° ΠΈΠΊΠΎΠ½ΠΊΠ° ΡΠΎΠ±ΠΈΡΠ°Π΅ΡΡΡ ΠΏΠΎ ΡΠ°ΡΡΡΠΌ, Π½ΡΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ part ΡΡΡΡΠΈΠΊΡ Π² Π΅Π΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅: videocam_slash_part,
ΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ ΡΠ°ΠΌ ΡΠ°Π·ΠΌΠ΅Ρ ΠΈΠΊΠΎΠ½ΠΊΠΈ Π² Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΡΠ°ΠΉΠ»Π° Π² ΠΊΠΎΠ½ΡΠ΅: videocam_slash_part_28.svg.
ΠΠ»Π°Π΄ΡΠΌ ΠΏΠΎΠ»ΡΡΠΈΠ²ΡΠΈΠ΅ΡΡ ΡΠ°ΠΉΠ»Ρ Π² ΠΏΠ°ΠΏΠΊΡ Ρ Π½ΡΠΆΠ½ΠΎΠΉ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠ΅ΠΉ, ΠΊΠ°ΠΊ ΠΎΠΏΠΈΡΠ°Π½ΠΎ Π² ΡΠ°Π³Π΅ ΠΏΡΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΠ²ΠΎΠ΅ΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ.
ΠΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ ΠΈΠΊΠΎΠ½ΠΊΡ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ±ΠΈΡΠ°ΡΡ ΠΏΠΎ ΡΠ°ΡΡΡΠΌ Π² ΠΊΠΎΠ΄Π΅:
<Icon28VideocamPart>
<Icon28VideocamPart.SlashPart />
</Icon28VideocamPart>
Π‘Π°ΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ ΠΈΠΊΠΎΠ½ΠΊΠΈ ΠΈ Π²ΡΠ΅ Π΅Π³ΠΎ ΡΠ°Π±ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ ΠΈΠΌΠ΅ΡΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΠΉ Π½Π°Π±ΠΎΡ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅ΠΌΡΡ
ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ², ΠΏΠΎΡΡΠΎΠΌΡ ΠΊΠ°ΠΆΠ΄ΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ ΡΠ°ΡΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠΊΡΠ°ΡΠΈΡΡ Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΡΠ΅ΡΠ΅Π· fill.
ΠΠΎΠΆΠ΅Ρ ΠΏΠΎΡΠ²ΠΈΡΡΡΡ ΠΏΠΎΡΡΠ΅Π±Π½ΠΎΡΡΡ Π² ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ ΡΠ°ΡΡΡΠΎΠ²ΡΡ ΠΈΠΊΠΎΠ½ΠΎΠΊ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Π±ΡΠ°ΡΠ·Π΅ΡΡ Π½Π΅ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ Π²Π΅ΠΊΡΠΎΡΠ½ΡΠ΅ ΡΠ΅Π½ΠΈ ΠΈ Π³ΡΠ°Π΄ΠΈΠ΅Π½ΡΡ, Π»ΠΈΠ±ΠΎ ΡΠ°Π·ΠΌΠ΅Ρ ΡΠ°ΠΉΠ»ΠΎΠ² Ρ ΡΠ°ΠΊΠΈΠΌΠΈ ΡΡΡΠ΅ΠΊΡΠ°ΠΌΠΈ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ Π±ΠΎΠ»ΡΡΠ΅ ΡΠ°ΡΡΡΠΎΠ²ΠΎΠ³ΠΎ ΡΠΎΡΠΌΠ°ΡΠ°. Π‘ΠΊΡΠΈΠΏΡΡ ΠΈΠ· ΠΏΠ°ΠΊΠ΅ΡΠ° ΠΌΠΎΠ³ΡΡ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ Π³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ ΠΊΠ°ΠΊ Π΄Π»Ρ Π²Π΅ΠΊΡΠΎΡΠ½ΠΎΠ³ΠΎ ΡΠΎΡΠΌΠ°ΡΠ°, ΡΠ°ΠΊ ΠΈ Π΄Π»Ρ ΡΠ°ΡΡΡΠΎΠ²ΠΎΠ³ΠΎ - png.
ΠΠΎΠ±Π°Π²ΡΡΠ΅ ΠΏΠ°ΠΏΠΊΡ png, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ ΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½Ρ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΈ Ρ ΡΠ°Π·ΠΌΠ΅ΡΠ°ΠΌΠΈ.
Π£ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠ° Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΈ, Π² ΠΊΠΎΡΠΎΡΡΡ
ΡΠ°ΡΠΏΠΎΠ»Π°Π³Π°ΡΡΡΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΏΠΎΠ΄ ΡΠ°Π·Π½ΡΠ΅ ΠΏΠ»ΠΎΡΠ½ΠΎΡΡΠΈ ΠΏΠΈΠΊΡΠ΅Π»Π΅ΠΉ ΡΠΊΡΠ°Π½ΠΎΠ².
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΈΠΊΠΎΠ½ΠΊΠ° 24 ΡΠ°Π·ΠΌΠ΅ΡΠ° ΠΌΠΎΠΆΠ΅Ρ ΠΎΡΠΎΠ±ΡΠ°Π·ΠΈΡΡΡΡ Π½Π° retina-ΡΠΊΡΠ°Π½Π΅, Π΄Π»Ρ ΡΠ°ΠΊΠΈΡ ΡΠΊΡΠ°Π½ΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ²ΡΡΠ΅Π½Π½ΠΎΠ³ΠΎ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡ. ΠΠ»Ρ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΉ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΠΉ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΡ ΠΈΠ· π Android, Π½Π°Π·Π²Π°Π½ΠΈΡ ΡΠ°ΠΉΠ»ΠΎΠ² ΡΠ°Π·Π½ΡΡ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΠΉ Π΄Π»Ρ ΠΎΠ΄Π½ΠΎΠΉ ΠΈ ΡΠΎΠΉ ΠΆΠ΅ ΠΈΠΊΠΎΠ½ΠΊΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΈΠΌΠ΅ΡΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎΠ΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅, Π½ΠΎ ΡΠ°Π·Π½ΠΎΠ΅ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΠ΅:
src/
png/
12/
drawable-mdpi/
lock_shadow_12.png // 1x, 12px/12px
drawable-hdpi/
lock_shadow_12.png // 1.5x 18px/18px
drawable-xhdpi/
lock_shadow_12.png // 2x, 24px/24px
drawable-xxhdpi/
lock_shadow_12.png // 3x, 36px/36px
drawable-xxxhdpi/
lock_shadow_12.png // 4x, 48px/48px
28/
drawable-mdpi/
verified_dark_28.png // 1x, 28px/28px
drawable-hdpi/
verified_dark_28.png // 1.5x 42px/42px
drawable-xhdpi/
verified_dark_28.png // 2x, 56px/56px
drawable-xxhdpi/
verified_dark_28.png // 3x, 84px/84px
drawable-xxxhdpi/
verified_dark_28.png // 4x, 112px/112px
FAQs
Tools for building SVG icons
We found that @vkontakte/icons-scripts demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago.Β It has 11 open source maintainers collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
Learn the essential steps every developer should take to stay secure on npm and reduce exposure to supply chain attacks.

Security News
Experts push back on new claims about AI-driven ransomware, warning that hype and sponsored research are distorting how the threat is understood.

Security News
Ruby's creator Matz assumes control of RubyGems and Bundler repositories while former maintainers agree to step back and transfer all rights to end the dispute.