Steve Lorimer
Steve Lorimer

Reputation: 28679

Change sails.js EJS views to use .html extensions instead of .ejs extensions?

Is it possible to configure sails.js apps to use .html extentions rather than .ejs (but still use the ejs view engine)?

sails new app creates ./views/home/index.ejs and ./views/layout.ejs.

I'd like to change the extensions to .html but keep everything else working the same way.

ie: I would now have ./views/home/index.html and ./views/layout.html, and the home page would still be injected into the layout page, as per normal.

How can I configure this please?

Upvotes: 5

Views: 3232

Answers (3)

Tom
Tom

Reputation: 4662

In latest sails.js 0.11, this also valid:

engine: 'ejs',
extension: 'html',

To check how they do this, in /node_modules/sails/lib/hooks/views/configure.js:

if (typeof sails.config.views.engine === 'string') {
    var viewExt = sails.config.views.extension || sails.config.views.engine;
    sails.config.views.engine = {
        name: sails.config.views.engine,
        ext: viewExt
    };
}

Upvotes: 0

Pranav Raj S
Pranav Raj S

Reputation: 86

Another approach

Sails provides EJS templating by default.To override this and to use .html files , here is a simple solution. In your Sails App , go to config/routes.js. You will see following code there

module.exports.routes = {

 /***************************************************************************
 *                                                                          *
 * Make the view located at `views/homepage.ejs` (or `views/homepage.jade`, *
 * etc. depending on your default view engine) your home page.              *
 *                                                                          *
 * (Alternatively, remove this and add an `index.html` file in your         *
 * `assets` directory)                                                      *
 *                                                                          *
 ***************************************************************************/

 '/': {
   view: 'homepage'
 }

 /***************************************************************************
 *                                                                          *
 * Custom routes here...                                                    *
 *                                                                          *
 *  If a request to a URL doesn't match any of the custom routes above, it  *
 * is matched against Sails route blueprints. See `config/blueprints.js`    *
 * for configuration options and examples.                                  *
 *                                                                          *
 ***************************************************************************/

};

Remove the route to '/' as shown below . Keep it blank

New routes.js will look like

module.exports.routes = {

   //Remove '/' :)

};

Okay !!! now it’s done you can use your HTML files in Sails app . Put your index.html in assets folder . Sails will now load views from here :)

Upvotes: 3

bredikhin
bredikhin

Reputation: 9035

In your config/views.js:

engine: {
  ext: 'html',
  fn: require('ejs').renderFile
},

Seems though that the future support for this feature is not guaranteed, since they removed this from docs, so use with caution.

Upvotes: 9

Related Questions