
Security News
vlt Launches "reproduce": A New Tool Challenging the Limits of Package Provenance
vlt's new "reproduce" tool verifies npm packages against their source code, outperforming traditional provenance adoption in the JavaScript ecosystem.
@firefoxic/conjure
Advanced tools
🪄 Conjure images, icons and favicons for your frontend project.
In most frontend projects, you have to perform the same and rather boring actions with images between exporting them from Figma and deploying the project to the server. Spare yourself from this routine!
Conjure is a command line utility for optimizing vector images, converting raster images to modern formats for different pixel densities and also preparing favicons.
To install Conjure, you need to have Node.js installed on your machine. You can then install it via npm or pnpm in your project (or globally, then replace -D
flag with -g
):
npm add @firefoxic/conjure -D
or
pnpm add @firefoxic/conjure -D
Conjure is invoked via the command line:
with globally installation:
conjure <command> [options]
with locally installation (in a project):
npm exec conjure <command> [options]
or
pnpm exec conjure <command> [options]
without installation:
npm exec @firefoxic/conjure <command> [options]
or
pnpm dlx @firefoxic/conjure <command> [options]
images
— Optimize SVGs and convert raster images to modern formats (Webp and Avif by default).
icons
— Optimize SVG icon files.
favicons
— Convert the original SVG favicons (expect at least one of touch.svg
, 32.svg
, and 16.svg
) to optimized vector and all raster favicons, including ICO format and necessary PNG and Webp, and also generate a webmanifest (read this article about favicons by Andrey Sitnik).
all
— Run all the above commands.
Notice: Individual commands handle the contents of the specified directory. But the general
all
command expects the path to the directory containing theimages
,icons
andfavicons
directories (see examples below).
-i
, --inputDirectory
String
src/shared
-o
, --outputDirectory
String
--inputDirectory
-d
, --originDensity
Number
2
-f
, --targetFormats
String
webp,avif
-a
, --addOriginFormat
Boolean
false
-r
, --removeOrigin
Boolean
false
In the source/images
folder, optimize all SVGs and convert the raster images to webp
and avif
formats at the original size for 2x
pixel density and at a reduced size for 1x
pixel density; and after processing the raster images, delete their original files:
conjure images --inputDirectory=source/images --removeOrigin
Tip for exporting raster layers from layouts
If you have finally managed to give up old formats (such as JPG and PNG) and use only modern Webp and Avif, it is better to export raster layers from Figma only to PNG. JPG will only add artifacts on them. Avoid unnecessary quality loss.
Take all vector and raster images from the raws/images
folder; optimize vector images and put them in source/images
; convert raster images to webp
format and to the original format, optimizing them for 2x
and 1x
pixel densities, placing these results also in source/images
; when processing is completed, delete the original raster images from raws/images
:
conjure images -i raws/images -o source/images -f webp -a -r
Optimize SVG icons in the default src/shared/icons
folder:
conjure icons
In the assets/favicons
folder, convert files touch.svg
, 32.svg
(and optionaly 16.svg
) to:
favicon.ico
in size 32×32
(and optionaly with second layer in size 16×16
)icon.svg
— optimized version of 32.svg
(or touch.svg
if 32.svg
and 16.svg
are missing)icon-180.png
in size 180×180
for old iPhonesicon-192.png
and icon-192.webp
in size 192×192
icon-512.png
and icon-512.webp
in size 512×512
manifest.webmanifest
with the name
and description
fields from your package.json
and the icons
field for the 192
and 512
filesLinks.md
— advice on code of links for generated files, moving files, and fixing paths to files.conjure favicons -i assets/favicons
Move the resulting favicon.ico
and manifest.webmanifest
to the project directory, from where they will be moved to the root of the server. The default paths in manifest.webmanifest
are formed with the expectation that the manifest.webmanifest
file will be moved to the root of the project source (which corresponds to src/
by default). In any case, double-check these paths to make sure they match the file structure of your project.
Recommendations for the source favicon files
- The most optimal composition of source files is a couple of files:
32.svg
— the drawing is adjusted to a32×32
pixel grid, may transparent areas such as rounded corners of the background;touch.svg
— the drawing is prepared for large touch icons with solid background without rounding, with margins much larger than32.svg
.- If you don't have a variant specially prepared by the designer for the pixel grid size
16×16
, then don't create a file16.svg
from variants of other sizes — it will only increase the weight of the finalfavicon.ico
.- If you don't have a
32×32
variant, but you have a16×16
variant, there is no need to make a32.svg
file,conjure
will make all the variants for you.- If you have only one variant and it's not
16×16
, it doesn't matter what you name the file,32.svg
ortouch.svg
(as long as it's not16.svg
) — a file with either of these two names will be used byconjure
to generate the entire set of favicons.
Run all three special commands with default settings, but deleting the original raster images, i.e.:
conjure images
in the rc/shared/images
folder with deleting the original raster images,conjure icons
in the ``src/shared/icons` folder,conjure favicons
in the ``src/shared/favicons` folder,conjure all -r
This project is licensed under the MIT License — see the LICENSE.md file for details.
FAQs
🪄 Conjure images, icons and favicons for your frontend project.
The npm package @firefoxic/conjure receives a total of 1 weekly downloads. As such, @firefoxic/conjure popularity was classified as not popular.
We found that @firefoxic/conjure demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 0 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
vlt's new "reproduce" tool verifies npm packages against their source code, outperforming traditional provenance adoption in the JavaScript ecosystem.
Research
Security News
Socket researchers uncovered a malicious PyPI package exploiting Deezer’s API to enable coordinated music piracy through API abuse and C2 server control.
Research
The Socket Research Team discovered a malicious npm package, '@ton-wallet/create', stealing cryptocurrency wallet keys from developers and users in the TON ecosystem.