Swiftpack.co -  SwiftyGuerrero/CNAMEPublishPlugin as Swift Package
Swiftpack.co is a collection of thousands of indexed Swift packages. Search packages.
SwiftyGuerrero/CNAMEPublishPlugin
A plugin that generates a CNAME file for the Publish static site generator. 🚀
.package(url: "https://github.com/SwiftyGuerrero/CNAMEPublishPlugin.git", from: "0.2.0")

CNAME plugin for Publish 🚀

Build Status Swift Swift PM Compatible Mac + Linux Twitter: @SwiftyGuerrero


A Publish plugin that generates a custom domain name file for any Publish website deployed to GitHub.

Table of Contents

Background

When developing your own static website and deploying to GitHub Pages, you will most likely want to have your own custom domain. This requires having a custom domain name file, also known as a CNAME in the root directory of your website or the GitHub repository that your website is hosted on. When generating your site and pushing to GitHub, the CNAME file is removed since Publish will always push whatever files are generated in the dedicated Output directory. This plugin aims to generate a CNAME file into the Output directory that Publish uses for deploying your site to GitHub.

Install

To install it into your Publish package, add it as a dependency within your Package.swift manifest:

let package = Package(
    ...
    dependencies: [
        ...
        .package(url: "https://github.com/SwiftyGuerrero/CNAMEPublishPlugin", from: "0.1.0")
    ],
    targets: [
        .target(
            ...
            dependencies: [
                ...
                "CNAMEPublishPlugin"
            ]
        )
    ]
    ...
)

Usage

In the file where you declare your Publish deployment pipeline, import CNAMEPublishPlugin:

import CNAMEPublishPlugin

The plugin can be installed at any point in the publishing pipeline, but before the deploy step:

import CNAMEPublishPlugin

...
try Website().publish(using: [
    ...
    .installPlugin(.generateCNAME(with: "test.io", "www.test.io")),
    .deploy(using: .gitHub("TestUser/TestUser.github.io"))
])

You can also add a CNAME to the Resources directory of your website and then use the addCNAME plugin to copy the CNAME to the output directory:

import CNAMEPublishPlugin

...
try Website().publish(using: [
    ...
    .installPlugin(.addCNAME()),
    .deploy(using: .gitHub("TestUser/TestUser.github.io"))
])

<img style="max-width:100%;" src="https://raw.github.com/SwiftyGuerrero/CNAMEPublishPlugin/master/that the file is generated and in the Output directory, you can use the publish run command to test publishing your site locally. Then in the created Output directory, you will see the generated CNAME as shown below:

To learn more about custom domains for GitHub Pages, visit GitHub's documentation related to managing your own custom domain.

Contribute

CNAMEPublishPlugin is developed completely in the open, and your contributions are more than welcome.

Before getting started, spend some time checking the internal implementation and documentation so you'll be ready to tackle any issues or edge cases that you might encounter.

This project does not come with GitHub Issues-based support, and users are instead encouraged to become active participants in its continued development — by fixing any bugs that they encounter, or by improving the documentation wherever it’s found to be lacking.

Thank you and enjoy :100:

GitHub

link
Stars: 32
Last commit: 3 weeks ago

Ad: Job Offers

iOS Software Engineer @ Perry Street Software
Perry Street Software is Jack’d and SCRUFF. We are two of the world’s largest gay, bi, trans and queer social dating apps on iOS and Android. Our brands reach more than 20 million members worldwide so members can connect, meet and express themselves on a platform that prioritizes privacy and security. We invest heavily into SwiftUI and using Swift Packages to modularize the codebase.

Dependencies

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