current.js
is a tiny 🤏 JavaScript library (only 410 bytes) that allows you to access data stored in "current" HTML <meta>
elements.
To add current.js
to your project, run the following command in your terminal:
yarn add current.js
Then, in the JavaScript file where you want to use current.js
(usually application.js
), add the following line of code:
import "current.js"
This will make the Current
object available globally, so you can access it in any file without having to import it again.
Alternatively, you can import the Current
object directly:
import { Current } from "current.js"
To use current.js
, you need to add <meta>
elements to the <head>
section of your HTML document, with the name
attribute starting with current-
:
<head>
<meta name="current-environment" content="production">
<meta name="current-user-id" content="123">
<meta name="current-user-time-zone-name" content="Central Time (US & Canada)">
</head>
You can then access the data stored in these elements using the Current
object. If there is only one <meta>
tag with the name you requested, current.js
will return the value as a string:
Current.environment
// => "production"
If there are multiple <meta>
tags with the same name, current.js
will return an object with the remaining name as a camelized key.
Current.user
// => { id: "123", timeZoneName: "Central Time (US & Canada)" }
If the name you requested is not found, it will return an empty object
Current.foo
// => {}
The prefix
property on config
can be used to customize the prefix used to lookup the <meta>
tags.
import { config } from "current.js"
config.prefix = "config"
<meta name="current-environment" content="development">
<meta name="config-environment" content="production">
Calling Current.environment
would now look for the meta tag with the config-environment
name.
Current.environment
// => "production"
You can also configure current.js
to use no prefix
if you set the prefix
to null
.
import { config } from "current.js"
config.prefix = null
<meta name="current-environment" content="development">
<meta name="environment" content="production">
Calling Current.environment
would also return "production"
in this case.
To run the test runner:
yarn install
yarn build
yarn test
This library was inspired by the source code of HEY.com, developed by 37signals. The original source code can be found here.
A big shout out to the team at 37signals and HEY.com for not minifying the JavaScript source code in their apps by "Paying tribute to the web with View Source".
We have made some changes and improvements, but this library wouldn't have been possible without their inspiration and ideas. Thanks, it's really appreciated!