
Security News
pnpm 10.0.0 Blocks Lifecycle Scripts by Default
pnpm 10 blocks lifecycle scripts by default to improve security, addressing supply chain attack risks but sparking debate over compatibility and workflow changes.
grunt-toggl
Advanced tools
Toggl API for Grunt. E.g. start time tracking with `grunt watch` or `grunt toggl`
Toggl API for Grunt. E.g. start time tracking with
grunt watch
orgrunt toggl
This plugin requires Grunt >=0.4.4
If you haven't used Grunt before, be sure to check out the Getting Started guide, as it explains how to create a Gruntfile as well as install and use Grunt plugins. Once you're familiar with that process, you may install this plugin with this command:
npm install grunt-toggl --save-dev
Once the plugin has been installed, it may be enabled inside your Gruntfile with this line of JavaScript:
grunt.loadNpmTasks('grunt-toggl');
In your project's Gruntfile, add a section named toggl
to the data object
passed into grunt.initConfig()
.
grunt.initConfig({
toggl: {
options: {
apiKey: '',
settingsFile: 'toggl.json'
workspace: null,
project: null,
data: {
description: '<%= pkg.name %>',
}
}
},
});
Your Toggl API key is required for this task. Get it from your profile on Toggl.com https://www.toggl.com/app/#profile.
Here are the ways to specify your API key:
Type: String
Default value: ``
This is one way to specify your Toggl API key. Not secure if your repo is public.
Type: String
Default value: ``
This is one way to specify your Toggl API key. Safe but you'll have to configure the shell env var on the machine you're using the task on.
Type: String
Default value: .toggl
This is another way to specify your Toggl API Key. Enter a filename to a JSON file that contains the key "apiKey" and value with your Toggl API key.
{
"apiKey": "demokeydemokeydemokey",
"workspace": 12345
"project": 1111111
}
You can also specify the workspace here.
This format is useful if you keep your Gruntfile in version control and don't
want your API key in it (e.g. add your .toggl
file to your .gitignore
).
Type: Integer
Default value: null
OPTIONAL (if specified in settingsFile). Equivalent to options.data.wid
.
Specify the Toggl Workspace ID that newly created time entries should go into.
Type: Integer
Default value: null
OPTIONAL. Equivalent to options.data.pid
. Specify the Toggl Project ID that
newly created time entries should go into.
Type: Object
Default value: {}
The data
object can take any values from the toggl time_entries
API
endpoint:
description: (string, strongly suggested to be used)
I like to use the package.json
name in the description, assuming you
have it loaded into the pkg variable
(pkg: grunt.file.readJSON('package.json')
):
data: {
description: '<%= pkg.name %>'
}
wid: workspace ID (integer, required if pid or tid not supplied).
pid: project ID (integer, not required)
tid: task ID (integer, not required)
billable: (boolean, not required, default false, available for pro workspaces)
start: time entry start time (string, required, ISO 8601 date and time)
stop: time entry stop time (string, not required, ISO 8601 date and time)
duration: time entry duration in seconds. If the time entry is currently running, the duration attribute contains a negative value, denoting the start of the time entry in seconds since epoch (Jan 1 1970). The correct duration can be calculated as current_time + duration, where current_time is the current time in seconds since epoch. (integer, required)
created_with: the name of your client app (string, required)
tags: a list of tag names (array of strings, not required)
duronly: should Toggl show the start and stop time of this time entry? (boolean, not required)
at: timestamp that is sent in the response, indicates the time item was last updated
See this doc for the latest properties available for the API: https://github.com/toggl/toggl_api_docs/blob/master/chapters/time_entries.md
Data in this object will override the workspace
and project
properties for
data.wid
and data.pid
Use:
grunt toggl:MYTASK:workspaces
To get a JSON list of workspaces. MYTASK
should be whatever task you have
configured, since you still need a valid API Key to get the workspaces.
OR just run the task without a workspace set. It will list your workspaces by default.
Use:
grunt toggl:MYTASK:projects
To get a JSON list of projects in the configured workspace. Your task needs to
have a Workspace ID properly setup in order to use this argument (valid
workspace
or wid
set in the options).
Use:
grunt toggl:MYTASK:stopCurrent
To stop the current task timer. This will call the API to find out if there is a current timer running. If there is, another call is made to stop it.
OR add this to your Gruntfile.js
grunt.registerTask('toggl:stop', ['toggl:default:stopCurrent']);
and you will be able to simply call
grunt toggl:stop
grunt.initConfig({
toggl: {
options: {
settingsFile: '.toggl',
workspace: null,
}
},
});
In lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code using Grunt.
debug
option that deletes time entries as soon as they're created.- 2015-02-21 v0.3.0 [CHANGED] support grunt >=0.4.4 in package.json
- 2014-04-29 v0.2.0 [ADDED] argument for listing projects in a workspace
- 2014-04-29 v0.2.0 [ADDED] argument for listing projects in a workspace
[CHANGED] arg for listing workspaces
- 2014-04-28 v0.1.1 Alpha READY. It works.
- 2014-04-28 v0.1.0 Work in progress, not ready.
FAQs
Toggl API for Grunt. E.g. start time tracking with `grunt watch` or `grunt toggl`
The npm package grunt-toggl receives a total of 2 weekly downloads. As such, grunt-toggl popularity was classified as not popular.
We found that grunt-toggl demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
pnpm 10 blocks lifecycle scripts by default to improve security, addressing supply chain attack risks but sparking debate over compatibility and workflow changes.
Product
Socket now supports uv.lock files to ensure consistent, secure dependency resolution for Python projects and enhance supply chain security.
Research
Security News
Socket researchers have discovered multiple malicious npm packages targeting Solana private keys, abusing Gmail to exfiltrate the data and drain Solana wallets.