Giter Site home page Giter Site logo

sitedata / netlify-shortener Goto Github PK

View Code? Open in Web Editor NEW

This project forked from kentcdodds/netlify-shortener

0.0 1.0 0.0 46 KB

Your own free URL shortener with Netlify

Home Page: https://www.youtube.com/watch?v=HL6paXyx6hM&list=PLV5CVI1eNcJgCrPH_e6d57KRUTiDZgs0u

License: MIT License

JavaScript 100.00%

netlify-shortener's Introduction

netlify-shortener

Uses netlify's redirect functionality to make a personal URL shortener. Works beautifully :)


Build Status Code Coverage version downloads MIT License

All Contributors

PRs Welcome Code of Conduct

The problem

You want a URL shortener for your custom domain and you want an easy way to create and update URLs but you don't want to pay hundreds of dollars a year.

This solution

This relies on Netlify's _redirects file for building a super simple URL shortener where the URLs are managed on GitHub and Netlify handles the redirecting for you.

Table of Contents

Installation

This module is distributed via npm which is bundled with node and should be installed as one of your project's devDependencies:

npm install --save-dev netlify-shortener

Usage

Your project should have a _redirects file that looks like this:

/example http://example.com

# fallback
/*       https://your-website.com

This module exposes a binary that you should use in your package.json scripts. You also need to add a homepage to your package.json:

{
  "homepage": "https://jsair.io",
  "scripts": {
    "shorten": "netlify-shortener"
  }
}

Then you can run:

npm run shorten # simply formats your _redirects file
npm run shorten https://yahoo.com # generates a short code and adds it for you
npm run shorten https://github.com gh # adds gh as a short URL for you

The netlify-shortener does a few things:

  1. generates a short code if one is not provided
  2. validates your URL is a real URL
  3. adds the URL to the top of _redirects
  4. runs a git commit and push (this will trigger netlify to deploy your new redirect)
  5. Copies the short URL to your clipboard

Netlify's deploys are normally fast enough that the new URL should be deployed by the time you've shared it to someone.

Shell Function

If you want to be able to run this anywhere in the terminal, you can try making a custom function for your shell.

Shell Agnostic

  1. Add the following executable definition to your package.json:
    {"bin": {"shorten": "cli.js"}}
  2. Create the cli.js file:
    #!/usr/bin/env node
    require('netlify-shortener')
  3. From your project directory, run the following to register the command globally:
    npm link

Bash

Place this in your ~/.bash_profile file:

shorten() { node {path-to-local-repo}/node_modules/.bin/netlify-shortener "$1" "$2"; }

Fish

Place this in ~/.config/fish/functions/shorten.fish:

function shorten --description "Shorten a URL"
  node {path-to-local-repo}/node_modules/.bin/netlify-shortener $argv
end

(Alternatively, run funced -s shorten and Fish will open your editor. Paste this code into the opened file.)

Windows (cmd)

Using Cmder, add this to your user-alias.cmd file.

shorten=cmd /c "cd /d {path-to-local-repo} && npm run shorten $1 $2"

FAQ

What about analytics?

I don't think Netlify will give you analytics, but you should be able to set up CloudFlare in front of your domain and I think they'll give you analytics.

Can I keep my links private?

Netlify doesn't charge for linking up private repositories (HOW COOL IS THAT!?) so you can make your GitHub repo private and that should keep your links private.

Inspiration

URL shorteners for custom domains and custom short codes are insanely expensive. Hiveam.com was the best price-wise, but the price went up and it's super expensive as well.

So I tried writing a custom netlify function and it worked pretty well, but then I was tipped off by smart people that using Netlify's built-in _redirects functionality would work well and it does!

So I built this tool to make it easier to do this for the two domains I need this for and now you can use it too!

Other Solutions

If you know more alternatives, please make a pull request and add it here!

Issues

Looking to contribute? Look for the Good First Issue label.

πŸ› Bugs

Please file an issue for bugs, missing documentation, or unexpected behavior.

See Bugs

πŸ’‘ Feature Requests

Please file an issue to suggest new features. Vote on feature requests by adding a πŸ‘. This helps maintainers prioritize what to work on.

See Feature Requests

Contributors ✨

Thanks goes to these people (emoji key):


Kent C. Dodds

πŸ’» πŸ“– πŸš‡ ⚠️

Carl Rosell

πŸ€”

Phil Hawksworth

πŸ€”

Matt Ferderer

πŸ“–

Jed Fox

πŸ’‘

Eric McCormick

πŸ“–

Preston Lamb

πŸ’»

Daniel D. Beck

πŸ“–

Justin Dorfman

πŸ”

Jake Jarvis

πŸ’»

MichaΓ«l De Boey

πŸ’»

OisΓ­n Quinn

πŸ’» ⚠️

SebJones

πŸ’»

Gabin Aureche

πŸ’» ⚠️

This project follows the all-contributors specification. Contributions of any kind welcome!

LICENSE

MIT

netlify-shortener's People

Contributors

allcontributors[bot] avatar andrewmcodes avatar caarlos0 avatar ddbeck avatar edm00se avatar j-f1 avatar jakejarvis avatar jdorfman avatar kentcdodds avatar mattferderer avatar michaeldeboey avatar oisinq avatar pjlamb12 avatar sebjones avatar transitive-bullshit avatar zhouzi avatar

Watchers

 avatar

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.