Generate the userscript metadata-block with package.json
This plugin requires Grunt ~0.4.5
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-userscript-meta --save-dev
Once the plugin has been installed, it may be enabled inside your Gruntfile with this line of JavaScript:
grunt.loadNpmTasks('grunt-userscript-meta');
In your project's Gruntfile, add a section named userscript-meta
to the data object passed into grunt.initConfig()
.
This plugins reads the information from the package.json
where more can be added in a userscript
object. The pkg object and a destination is required.
grunt.initConfig({
pkg: grunt.file.readJSON('package.json'), //global pkg
'userscript-meta': {
your_target: {
options:{
pkg: grunt.file.readJSON('other_package.json') //overwrites the global pkg
}
dest: 'src/userscript.meta.js'
},
},
});
Type: Object
Default value: The global pkg object.
The global pkg object can be overwritten for each task.
{
"name": "Test Userscript",
"description": "Testing the grunt-userscript-meta module",
"version": "0.1.0",
"homepage": "https://github.com/Zod-/grunt-userscript-meta",
"author": {
"name": "Julian Hangstörfer",
"email": "jhangstoerfer@gmail.com"
},
"license": "MIT",
"userscript":{
"namespace": "https://github.com/Zod-"
}
}
//Produces
// ==UserScript==
// @name Test Userscript
// @namespace https://github.com/Zod-
// @description Testing the grunt-userscript-meta module
// @version 0.1.0
// @author Julian Hangstörfer
// @source https://github.com/Zod-/grunt-userscript-meta
// @license MIT
// ==/UserScript==
The name for the userscript will be taken from pkg.name
but localization can be added via
pkg.userscript.name
.
{
"name": 'userscript name',
//...
"userscript": {
"name": {
"fr": "french userscript name",
"de": "german userscript name"
}
}
}
//Produces
// ==UserScript==
// ...
// @name userscript name
// @name:fr french userscript name
// @name:de german userscript name
// ...
// ==/UserScript==
The same can be done for the description.
{
"description": 'description',
//...
"userscript": {
"description": {
"fr": "french description",
"de": "german description"
}
}
}
//Produces
// ==UserScript==
// ...
// @description description
// @description:fr french description
// @description:de german description
// ...
// ==/UserScript==
Resources can be added via pkg.userscript.resource
{
//...
"userscript": {
"resource": [{
"name": "resName1",
"url": "resUrl1"
}, {
"name": "resName2",
"url": "resUrl2"
}]
}
}
//Produces
// ==UserScript==
// ...
// @resource resName1 resUrl1
// @resource resName2 resUrl2
// ...
// ==/UserScript==
This plugin can generate require urls for the specific userscript hosts (only greasyfork for now).
{
//...
"userscript": {
"require": {
"greasyfork": [{
"id": "1-greasemonkey-test-style"
}, {
"id": "42-disable-modal-dialogs-for-automation",
"version": "12584"
}]
}
}
}
//Produces
// ==UserScript==
// ...
// @require https://greasyfork.org/scripts/1-greasemonkey-test-style/code/code.js
// @require https://greasyfork.org/scripts/42-disable-modal-dialogs-for-automation/code/code.js?version=12584
// ...
// ==/UserScript==
Every other metakey can be added via the other
object which can be either a
single value or an array.
"userscript": {
"other": {
"include": ["url1", "url2"],
"grant": ["GM_setValue", "GM_getValue"],
"run-at": "document-start",
"require": ["url3", "url4"]
}
}
//Produces
// ==UserScript==
// ...
// @include url1
// @include url2
// @grant GM_setValue
// @grant GM_getValue
// @run-at document-start
// @require url3
// @require url4
// ...
// ==/UserScript==
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.
Added functionality