Learn about our RFC process, Open RFC meetings & more.Join in the discussion! »

ember-stream-generator

0.3.8 • Public • Published

Ember Stream Generator Build Status

NPM

This generator set is used to create an CJS require hierarchy for an EmberJS project structure. The main use-case, is for use with Browserify.
For example, given the following structure:

app
  |_controllers/
    |_user.js
    |_user/
      |_new.js
  |_views/
    |_user.js
  |_routes/
    |_user.js
    |_user/
      |_new.js
  |_...

This generator set can be used to generate a file, along the lines of .index.js, with the following contents:

// Start template code: Generated from template
require('ember'); // get Ember global around for the templates
require('./.templates');
 
var routes = require('./config/routes');
var App = require('./config/application');
 
App.Router.map(routes);
// End template code
 
// Start generated code
App.UserController = require('./controllers/user');
App.UserNewController = require('./controllers/user/new');
App.UserView = require('./views/user');
App.UserRoute = require('./routes/user');
App.UserNewRoute = require('./routes/user/new');
// more ...

Note: The config directory is required, with the application definition in config/application.js and the router definition in config/routes.js. This also requires a .templates.js file in the root directory (this is a precompiled templates file, see ember-template-compiler).

Usage

Install:

npm install ember-stream-generator --save

Available Options:

This stream takes three options stream(path, appName, customTemplatePath).

  • path - The path to the root of you client directory.
  • appName - Name of your Ember.Application instance, e.g. App.UserRoute.
  • customTemplatePath - Path to custom template, the default template is below.

Basic Example:

This stream should be used with other streams:

var esg = require('ember-stream-generator');
var fs = require('fs');
 
esg('./client/app').pipe(fs.createReadStream('./tmp/.index.js'));

Default Template:

If no template path is given, this is the default:

// this file is auto-generated, do not edit

require('ember'); // get Ember global around for the templates
require('./.templates');

var routes = require('./config/routes');
var {{appName}} = require('./config/application');

{{appName}}.Router.map(routes);

{{#each helpers}}
require('{{path}}');{{/each}}

{{#each modules}}
{{../appName}}.{{name}} = require('{{path}}');{{/each}}

module.exports = {{appName}};

Via Grunt

  // creates a file with requires for App.* for ember
  grunt.registerTask('pre-browserify', function () {
    var done = this.async();
    var emberStream = require('ember-stream-generator');
    var fs = require('fs');
    var inStream = emberStream('./client');
    var outStream = fs.createWriteStream('./client/.index.js');
 
    outStream.on('finish', done);
    inStream.pipe(outStream);
  });

Via Gulp

// creates a file with requires for App.* for ember
gulp.task('pre-browserify', function () {
  var emberStream = require('ember-stream-generator');
  var rename = require('gulp-rename');
  var source = require('vinyl-source-stream');
  var clientPath = './client/';
  
  emberStream(clientPath)
    .pipe(source(clientPath))
    .pipe(rename('.index.js'))
    .pipe(gulp.dest(clientPath));
});

Acknowledgment

The concept and some of the code comes from Ryan Florence's loom-ember.

Install

npm i ember-stream-generator

DownloadsWeekly Downloads

0

Version

0.3.8

License

MIT

Last publish

Collaborators

  • avatar
  • avatar