
Security News
Vite Releases Technical Preview of Rolldown-Vite, a Rust-Based Bundler
Vite releases Rolldown-Vite, a Rust-based bundler preview offering faster builds and lower memory usage as a drop-in replacement for Vite.
iconfont-plugin-webpack
Advanced tools
npm install iconfont-plugin-webpack
You can see a simple example within the Demo Config, but basically you just need to include the package at the top of your webpack config like this:
const IconfontPlugin = require('iconfont-plugin-webpack');
And then set up the configuration within the webpackModule.plugins
like this:
new IconfontPlugin({
src: './src/asset/iconfont', // required - directory where your .svg files are located
family: 'iconfont', // optional - the `font-family` name. if multiple iconfonts are generated, the dir names will be used.
dest: {
font: './src/font/[family].[type]', // required - paths of generated font files
css: './src/css/_iconfont_[family].scss' // required - paths of generated css files
},
watch: {
pattern: 'src/asset/iconfont/**/*.svg', // required - watch these files to reload
cwd: undefined // optional - current working dir for watching
},
cssTemplate: function() {}// optional - the function to generate css contents
})
The result will be a directory with Fonts in the formats eot, svg, ttf and woff as well as a .scss file with helping mixins for your iconfont. By default this .scss looks something like this:
$__iconfont__data: map-merge(if(global_variable_exists('__iconfont__data'), $__iconfont__data, ()), (
// iconfont data here
));
$create-font-face: true !default; // should the @font-face tag get created?
// should there be a custom class for each icon? will be .filename
$create-icon-classes: true !default;
// what is the common class name that icons share? in this case icons need to have .icon.filename in their classes
// this requires you to have 2 classes on each icon html element, but reduced redeclaration of the font family
// for each icon
$icon-common-class: 'icon' !default;
// if you whish to prefix your filenames, here you can do so.
// if this string stays empty, your classes will use the filename, for example
// an icon called star.svg will result in a class called .star
// if you use the prefix to be 'icon-' it would result in .icon-star
$icon-prefix: '' !default;
// helper function to get the correct font group
@function iconfont-group($group: null) {
// ...
}
// helper function to get the correct icon of a group
@function iconfont-item($name) {
// ...
}
// complete mixing to include the icon
// usage:
// .my_icon{ @include iconfont('star') }
@mixin iconfont($icon) {
// ...
}
// creates the font face tag if the variable is set to true (default)
@if $create-font-face == true {
@font-face {
font-family: "iconfont";
src: url('../fonts/iconfont.eot'); /* IE9 Compat Modes */
src: url('../fonts/iconfont.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
url('../fonts/iconfont.woff') format('woff'), /* Pretty Modern Browsers */
url('../fonts/iconfont.ttf') format('truetype'), /* Safari, Android, iOS */
url('../fonts/iconfont.svg') format('svg'); /* Legacy iOS */
}
}
// creates icon classes for each individual loaded svg (default)
@if $create-icon-classes == true {
.#{$icon-common-class} {
font-style: normal;
font-weight: 400;
@each $icon, $content in map-get($__iconfont__data, "iconfont") {
&.#{$icon-prefix}#{$icon}:before {
font-family: "iconfont";
content: iconfont-item("iconfont/#{$icon}");
}
}
}
}
In order to test the demo build included in this package all you need to do is clone this repository, head into the root folder and execute these commands:
npm install
npm run demo
You will then find the generated fonts within /demo/fonts
and the generated .scss within /demo/scss
.
If the fonts get bigger than 8192 bytes they will get extracted into their own files, otherwhise file-loader will embed them as base64 directly into the .css (See configuration for file-loader in demo/webpack.config.js)
![]() HaoyCn |
![]() Daniel Winter |
FAQs
Iconfont Generator.
The npm package iconfont-plugin-webpack receives a total of 3,629 weekly downloads. As such, iconfont-plugin-webpack popularity was classified as popular.
We found that iconfont-plugin-webpack demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer 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
Vite releases Rolldown-Vite, a Rust-based bundler preview offering faster builds and lower memory usage as a drop-in replacement for Vite.
Research
Security News
A malicious npm typosquat uses remote commands to silently delete entire project directories after a single mistyped install.
Research
Security News
Malicious PyPI package semantic-types steals Solana private keys via transitive dependency installs using monkey patching and blockchain exfiltration.