Uses netlify's redirect functionality to make a personal URL shortener. Works beautifully :)
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 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.
- Installation
- Usage
- Shell Function
- FAQ
- What about analytics?
- Can I keep my links private?
- Inspiration
- Other Solutions
- Issues
- Contributors β¨
- LICENSE
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
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 baseUrl
to your package.json
:
{
"baseUrl": "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:
- generates a short code if one is not provided
- validates your URL is a real URL
- adds the URL to the top of
_redirects
- runs a git commit and push (this will trigger netlify to deploy your new redirect)
- 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.
If you want to be able to run this anywhere in the terminal, you can try making a custom function for your shell.
- Add the following executable definition to your
package.json
:{"bin": {"shorten": "cli.js"}}
- Create the
cli.js
file:#!/usr/bin/env node require('netlify-shortener')
- From your project directory, run the following to register the command
globally:
npm link
Place this in your ~/.bash_profile
file:
shorten() { node {path-to-local-repo}/node_modules/.bin/netlify-shortener "$1" "$2"; }
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.)
Using Cmder, add this to your user-alias.cmd
file.
shorten=cmd /c "cd /d {path-to-local-repo} && npm run shorten $1 $2"
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.
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.
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!
- netlify-shortener-sh: plain shell script version
If you know more alternatives, please make a pull request and add it here!
Looking to contribute? Look for the Good First Issue label.
Please file an issue for bugs, missing documentation, or unexpected behavior.
Please file an issue to suggest new features. Vote on feature requests by adding a π. This helps maintainers prioritize what to work on.
Thanks goes to these people (emoji key):
This project follows the all-contributors specification. Contributions of any kind welcome!
MIT