Swiftpack.co - c0dedbear/SVGPublishPlugin as Swift Package

Swiftpack.co is a collection of thousands of indexed Swift packages. Search packages.
See all packages published by c0dedbear.
c0dedbear/SVGPublishPlugin 0.1.4
Pure SVG files inside yours Publish projects.
⭐️ 0
🕓 3 weeks ago
.package(url: "https://github.com/c0dedbear/SVGPublishPlugin.git", from: "0.1.4")


Tests Swift 5.5 Swift Package Manager Mac Publish Plugin

Use pure SVG files in your Publish projects💥


Add the package to your SPM dependencies.

.package(name: "SVGPublishPlugin", url: "https://github.com/c0dedbear/SVGPublishPlugin", from: "0.1.0"),


  1. Put your .svg files at the "Resources/svg" folder (it's default path, but you can changed it).
  2. Install the plugin using publishing pipeline like this:
import SVGPublishPlugin
try YourWebSite().publish(
	withTheme: .bearlogsTheme,
	additionalSteps: [
	plugins: [

☝Note that if your svg files not placed in the "Resources/svg", you must use 'folderPath' parameter of '.svgPlugin' method.

⚠️ There must be at least one file with .svg extension, in other case publish will throw an error on the install plugin step.

  1. Use within .svg node like this:
// Note that you don't need import plugin in places where you build your HTML

func makePageHTML(for page: Page, context: PublishingContext<Site>) throws -> HTML {
		.head(for: page, on: context.site),
			.header(for: context, selectedSection: nil),
			   // File named `rss.svg` placed on folder path typed when installing plugin.
			   .text("RSS feed"),
  1. Also you can put it additional parameters right into your svg file:
.svg("rss", parameters: .class(CSS.FooterRssIcon), .width(20), .height(20)),

.width and height - size of svg into pixels.

.classString - stylesheet's class name string

.class - StrongTypedCSS conformed class (see more on https://github.com/c0dedbear/StrongTypedCSSPublishPlugin)

.classes - array of StrongTypedCSS-conformed cases

  1. For a more convenience usage, I recommend to create an enum conformed to SVGFileNameCase protocol, which contains names of the svg files in your folder. And use it this way:
import SVGPublishPlugin
enum SVG: String, SVGFileNameCase {
	case logo
	case search
	case rss
	case backToTop

// Inside of any HTML Node:
.svg(SVG.logo, parameters: .class(CSS.logoForFeaturedPosts)),


logo Mikhail Medvedev | https://bearlogs.ru


Stars: 0
Last commit: 3 weeks ago
jonrohan Something's broken? Yell at me @ptrpavlik. Praise and feedback (and money) is also welcome.


Release Notes

3 weeks ago

Updated for Swift 5.5 and Publish 0.9.0

Swiftpack is being maintained by Petr Pavlik | @ptrpavlik | @swiftpackco | API | Analytics