Giter Club home page Giter Club logo

google-fonts-webpack-plugin's Introduction

Google Fonts Webpack Plugin

Compatible with Webpack >= 4.14.0 and >= 5.0.0

Download Google fonts to webpack build folder using google-webfonts-helper or use CDN to integrate with html-webpack-plugin.

publish


Install

npm install @beyonk/google-fonts-webpack-plugin

Usage

/webpack.config.js

const GoogleFontsPlugin = require("@beyonk/google-fonts-webpack-plugin")

module.exports = {
	"entry": "index.js",
	/* ... */
	plugins: [
		new GoogleFontsPlugin({
			fonts: [
				{ family: "Source Sans Pro" },
				{ family: "Roboto", variants: [ "400", "700italic" ], display: "block" }
			]
			/* ...options */
		})
	]
}

Options

new GoogleFontsPlugin(options: Object)
Name Type Default Description
fonts FontObject[] - Configuration generated by Fontello.com.
name String "fonts" Module name.
filename String "fonts.css" Css file name.
path String "font/" Relative path to fonts directory. If path is undefined fonts are not downloaded, the css file is generated with Google hosted font files.
local Boolean true Whether to use google-webfonts-helper API or just link to Google Fonts hosted css. If this option is set to false this plugin just adds the css url to html-webpack-plugin (if present).
noLocalInCss Boolean false Whether to prepend local(FontName) expression before font files in CSS file (see MDN).
formats Array [ "eot", "woff", "woff2", "ttf", "svg" ] Font formats to download.
apiUrl String "https://google-webfonts-helper.herokuapp.com/api/fonts" google-webfonts-helper API url.

FontObject

Name Type Default Description
family String - Font family.
variants Array - Font variants according to google-webfonts-helper (e.g.: [ "italic", "500", "700italic" ]).
subsets Array - Font subsets according to google-webfonts-helper (e.g.: [ "latin", "greek" ]).
formats Array - Font formats to download. Defaults to options.formats.
display String "swap" Font Display

google-fonts-webpack-plugin's People

Contributors

antony avatar chapa avatar dakur avatar debanjanbasu avatar jgreubel avatar leimercastellano avatar navelpluisje avatar odinsey avatar seierstad avatar stamp avatar subins2000 avatar technicalpickles avatar upalatucci avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

google-fonts-webpack-plugin's Issues

[New feature] Path to config file

Hi,
The option to separate parameters in a file, e.g. JSON, would be very useful

Example:
new GoogleFontsPlugin('path/to/google-fonts.json')

Greetings.

Not generating assets URLs

Hi,

I know this plugin is not developed anymore, written for WP4, but right now it's somewhat compatible with WP5 yet few features stopped working, probably caused by hook name changes (i. e. compilation.hooks.htmlWebpackPluginBeforeHtmlGeneration does not exist anymore). I wasn't able to make a quick fix in code, as I don't understand webpack, html plugin nor this plguin enough to make it work again. Maybe I'll immerse into it one day but I doubt it. Nonetheless I've made quick&dirty workaround for generating link tag in HTML without creating a template like an answer in Issue #8 suggests based on https://github.com/jantimon/html-webpack-plugin#beforeassettaggeneration-hook

Heres the code you can paste directly to webpack.config.js (or anywhere else and include it using require):

class InsertFontCSS {
	constructor(url) { this.url = url; }
	apply(compiler) {
		compiler.hooks.compilation.tap('InsertFontCSS', (compilation) => {
    			HtmlWebpackPlugin.getHooks(compilation).beforeAssetTagGeneration.tapAsync('InsertFontCSS',
				(data, cb) => { data.assets.css.push(this.url); cb(null, data) }
			)
		})
	}
}

Than it's enough to use furher in wp configuration:

plugins: [
	new GoogleFontsPlugin({
		fonts: [
			{ family: "Source Sans Pro" },
			{ family: "Roboto" },
			{ family: "Vollkorn" }
		],
		local: true
	}),
	new InsertFontCSS("./fonts.css"),
	new HtmlWebpackPlugin({ "title": "My fonts are working, yay!" }),
]

Webpack 5 Support

webpack 5 build throws this warning

(node:18764) [DEP_WEBPACK_DEPRECATION_ARRAY_TO_SET_PUSH] DeprecationWarning: chunk.files was changed from Array to Set (using Array method 'push' is deprecated)
    at Set.set.push (\node_modules\webpack\lib\util\deprecation.js:108:3)
    at addFile (\node_modules\@beyonk\google-fonts-webpack-plugin\src\index.js:135:38)
    at \node_modules\@beyonk\google-fonts-webpack-plugin\src\index.js:142:21
    at processTicksAndRejections (node:internal/process/task_queues:93:5)

No stylesheet in html with html-webpack-plugin

Hi, sorry but this is more of a question than a bug report.

I'm using @beyonk/google-fonts-webpack-plugin in combination with html-webpack-plugin. Is there any way to output a <link> tag with the fonts.css stylesheet in my html?

My webpack.config.js is something along these lines:

const webpack = require("webpack");
const HtmlWebpackPlugin = require("html-webpack-plugin");
const GoogleFontsPlugin = require("@beyonk/google-fonts-webpack-plugin");

module.exports = env => {
  return {
    entry: { index: "./src/index.ts" },
    plugins: [
      new GoogleFontsPlugin({
        fonts: [
          {
            family: "Open Sans",
            variants: ["400", "600", "700"],
          },
        ],
      }),
      new HtmlWebpackPlugin({...}),
    ],
  };
};

I've tried switching the order of the plugins, but that didn't change anything.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.