This provides a sails hook integrating the Sprokets inspired asset compiler Mincer. This uses the the Connect-Assets module for integrating mincer. It supports everything mincer supports: Coffeescript, SCSS, LESS, Stylus, Jade, HAML, and EJS.
[![NPM version][npm-image]][npm-url] [![Dependency status][david-dm-image]][david-dm-url] [npm-url]: https://npmjs.org/package/sails-hook-mincer [npm-image]: http://img.shields.io/npm/v/sails-hook-mincer.svg [david-dm-url]:https://david-dm.org/dapriett/sails-hook-mincer [david-dm-image]:https://david-dm.org/dapriett/sails-hook-mincer.svg
The advantages of using connect-mincer compared to sails's built-in asset manager includes:
- Bust Caching: All assets are fingerprinted using an MD5 hash, so if an asset changes, the filename also changes (in production).
- Asset Helpers: Referencing assets is a breeze with built in asset helpers such as
<%- css('path/to/asset') %>
and<%- js('path/to/js') %>
- Directives: You can require files and whole directories of js/coffeescript in a single file.
- Multiple Loaders: Instead of having just one minified and concatenated js file as defined by any assets in the linker folder, you can have as many as you want via directives.
$ npm install sails-hook-mincer --save
You'll need to modify the default sails grunt tasks to disable it's builtin assets compiler and linker
Dev Environment: tasks/register/default.js
grunt.registerTask('default', function() {
// Do Nothing
return;
});
Prod Environment: tasks/register/prod.js
grunt.registerTask('prod', function() {
// Do Nothing
return;
});
TODO:
Add precompile scripts for tasks/register/build.js
and tasks/register/buildProd.js
** When switching, make sure to clear any compiled assets in your .tmp
directory
Simply create a config/mincer.js
to modify the options
module.exports.mincer = {
// Enable/Disable mincer - Default: true
enable: true,
// Add a custom on initialize function to setup mincer
// @see [Connect-Assets](https://github.com/adunkman/connect-assets#custom-configuration-of-mincer)
onInit: function(instance) {
// Custom configuration of the mincer environment can be placed here
instance.environment.registerHelper(/* ... */);
},
// @see [Connect-Assets](https://github.com/adunkman/connect-assets#options) for all available options
paths: ['assets/']
}
For all available options, see Connect-Assets Options