Grunt task to urlencode, concatenate and wrap JavaScript files to prepare for execution as a bookmarklet.
npm install grunt-bookmarklet-wrapper!Build Status 
~1.0.1
shell
npm install grunt-bookmarklet-wrapper --save-dev
`
Once the plugin has been installed, it may be enabled inside your Gruntfile with this line of JavaScript:
`js
grunt.loadNpmTasks('grunt-bookmarklet-wrapper');
`
Although I recommend using load-grunt-tasks
The "bookmarklet_wrapper" task
$3
In your project's Gruntfile, add a section named bookmarklet_wrapper to the data object passed into grunt.initConfig().
`js
grunt.initConfig({
bookmarklet_wrapper: {
options: {
// Task-specific options go here.
banner: '\n/! <%= pkg.name %> by <%= pkg.author.name %> /'
},
your_target: {
// Target-specific file lists and/or options go here.
files: {
'foo-bookmarklet.js': ['foo1.js', 'foo2.js']
}
},
},
});
`
Example output:
`js
javascript:(function(){alert('foo%20bar');})();
`
$3
#### files
A key/value pair is accepted. The key is the path to the output file as a String, the value an array of
Strings, the paths of the input files that will be urlencoded and concatenated.
$3
#### options.banner
Type: String
Default value: ''
A string value that is prepended as banner. The banner is prepended to the generated code, and should be a comment with an end-tag or otherwise work well with the generated, escaped bookmarklet.
`js
options.banner_prefix = '/! Bookmarklet <%= pkg.version %> /'
`
Example output:
`js
javascript:(function(){/! Bookmarklet 1.0.0 /alert('foo%20bar');})();
`
#### options.asJson
Type: Boolean
Default value: false
Generate a JSON file that contains an object with the bookmarklet stored in the attribute href.
Example output:
`js
{"href": "javascript:(function(){alert('foo%20bar');})();"}
`
$3
#### Default Options
In this example, the fixture files are urlencoded and concatenated. Then they are wrapped in an script-targed url IIFE.
So if the testing file has the content Testing and the 123 file had the content 1 2 3,
the generated result would be javascript:(function(){Testing1%202%203})();.
`js
grunt.initConfig({
bookmarklet_wrapper: {
default_options: {
files: {
'tmp/default_options': ['test/fixtures/testing', 'test/fixtures/123']
}
}
}
});
`
#### Custom Options
In this example, an option is added to append a banner to the processed code.
`js
grunt.initConfig({
bookmarklet_wrapper: {
custom_options: {
options: {
banner: '\r\n/! <%= pkg.name %> by <%= pkg.author.name %> /'
},
files: {
'tmp/custom_options': ['test/fixtures/testing', 'test/fixtures/123']
}
}
}
});
``