Giter VIP home page Giter VIP logo

eleventy-plugin-safe-external-links's Introduction

Eleventy Plugin Safe External Links

npm version npm downloads

Eleventy plugin ensuring that external links always contain rel="noopener", rel="noreferrer", which are potentially unsafe otherwise.

Installing

npm install @hirusi/eleventy-plugin-safe-external-links

This has only been tested with Eleventy 0.11.0 and would ideally be kept up to date with only future releases of Eleventy.

Usage

const safeExternalLinks = require("@hirusi/eleventy-plugin-safe-external-links")

module.exports = function (eleventyConfig) {

  eleventyConfig.addPlugin(safeExternalLinks, {
    pattern: "https{0,1}://", // RegExp pattern for external links
    noopener: true, // Whether to include noopener
    noreferrer: false, // Whether to include noreferrer
    files: [
      // What output file extensions to work on
      ".html",
    ],
  });
  
}

Including noreferrer in your external links is optional. Please see more on this in an article by pointjupiter.com here, as pointed out by @grempe. As always, please do your own research as well and make an informed choice. ๐Ÿ˜Š

Differences from chromeos/static-site-scaffold-modules/modules/eleventy-plugin-safe-external-links

  • This is not a mono-repo. Easier to manage and release updates.
  • Ignores files where permalink is set to false.
  • Fixes an issue where the plugin would empty everything but the body of the page content. (see issue with cheerio)
  • Adds _blank target to external links, unless noopener is set to false.
  • Adds _blank target to external links already carrying noopener rel (ignores noopener option)
  • Updated tests.
  • Updated README.

Versioning

I intend to keep this up to date with the original repo as best as I can. The patch and minor fields from the source repo would be combined - 0.1.4 would change to 0.14.0. The patch field then would reflect my changes on top of it for that minor release - 0.14.1.

eleventy-plugin-safe-external-links's People

Contributors

dependabot[bot] avatar jeffposnick avatar maybethisisru avatar robdodson avatar sachinsancheti1 avatar saneef avatar snugug avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

eleventy-plugin-safe-external-links's Issues

README sample code is broken (upstream also)

The setup instructions in the README are broken (and they are broken in the upstream repo as well).

  • Incorrect const assignment, copy/paste error from another plugin, invalid plugin (not @hirusi/...
  • Incorrect plugin config, extra closing brace, incorrect plugin const name

Should be:

const safeExternalLinks = require("@hirusi/eleventy-plugin-safe-external-links")

module.exports = function (eleventyConfig) {
  ...snip...

  eleventyConfig.addPlugin(safeExternalLinks, {
    pattern: "https{0,1}://", // RegExp pattern for external links
    noopener: true, // Whether to include noopener
    noreferrer: false, // Whether to include noreferrer
    files: [
      // What output file extensions to work on
      ".html",
    ],
  })

  ...snip...
}

Most of these issues also apply to the README in the upstream repo where these issues seem to have originated:

https://github.com/chromeos/static-site-scaffold-modules/blob/master/modules/eleventy-plugin-safe-external-links/README.md

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.