Skip to content

Instantly share code, notes, and snippets.

@billpull
Last active November 16, 2015 16:46

Revisions

  1. billpull revised this gist Nov 16, 2015. 2 changed files with 5 additions and 10 deletions.
    4 changes: 3 additions & 1 deletion ember-cli-build.js
    Original file line number Diff line number Diff line change
    @@ -81,6 +81,8 @@ module.exports = function(defaults) {
    }
    });

    stew.rm(appTree, moduleRoot + '/*.js', moduleRoot + '/*.hbs');

    additionalTrees.push(podTree);
    }

    @@ -91,4 +93,4 @@ module.exports = function(defaults) {
    extractPod('secure/login');

    return app.toTree(additionalTrees);
    };
    };
    11 changes: 2 additions & 9 deletions output
    Original file line number Diff line number Diff line change
    @@ -3,13 +3,6 @@ desired output
    assets/
    └── pods/
    └── secure/
    └── login.js

    current output
    assets/
    └── pods/
    └── secure/
    └── login/
    | └── router.js
    | └── template.hbs
    └── login
    └── index.js

  2. billpull revised this gist Nov 13, 2015. 1 changed file with 45 additions and 9 deletions.
    54 changes: 45 additions & 9 deletions ember-cli-build.js
    Original file line number Diff line number Diff line change
    @@ -1,8 +1,11 @@
    /* global require, module */
    var stew = require('broccoli-stew');
    var concat = require('broccoli-concat');
    var Funnel = require('broccoli-funnel');
    var MergeTrees = require('broccoli-merge-trees');
    var replace = require('broccoli-string-replace');
    var mergeTrees = require('broccoli-merge-trees');
    var esTranspiler = require('broccoli-babel-transpiler');
    var HtmlbarsCompiler = require('ember-cli-htmlbars');
    var EmberApp = require('ember-cli/lib/broccoli/ember-app');

    module.exports = function(defaults) {
    @@ -24,7 +27,7 @@ module.exports = function(defaults) {
    var jQuery = stew.find(appTree, "bower_components/jquery/dist/jquery.min.js");
    jQuery = stew.mv(jQuery, "bower_components/jquery/dist/jquery.min.js", "assets/jquery.js");

    additionalTrees = additionalTrees.concat(jQuery);
    additionalTrees.push(jQuery);
    }

    function extractModule(fileName, moduleName) {
    @@ -37,22 +40,55 @@ module.exports = function(defaults) {
    });
    module = stew.mv(module, 'mobile-web/'+ fileName + '.js', 'assets/'+ fileName + '.js');
    stew.rm(appTree, 'mobile-web/'+ fileName + '.js');
    additionalTrees = additionalTrees.concat(module);
    additionalTrees.push(module);
    }

    function extractPod(podPath) {
    var srcPodPath = 'app/pods/' + podPath;
    var outputFile = 'assets/' + podPath + '/';
    var podFunnel = new Funnel(srcPodPath, {
    destDir: outputFile
    var moduleRoot = 'mobile-web/pods/' + podPath;
    var outputPath = 'assets/' + podPath + '/';
    var jsFunnel = new Funnel(srcPodPath, {
    include: ['**/*.js'],
    destDir: outputPath
    });
    additionalTrees = additionalTrees.concat(podFunnel);
    var templateFunnel = new Funnel(srcPodPath, {
    include: ['**/*.hbs'],
    destDir: outputPath
    });

    templateFunnel = new HtmlbarsCompiler(templateFunnel, {
    isHTMLBars: true,
    templateCompiler: require('./bower_components/ember/ember-template-compiler')
    });

    var podTree = mergeTrees([jsFunnel, templateFunnel]);
    podTree = esTranspiler(podTree, {
    modules: "amdStrict",
    moduleIds: true,
    sourceMaps: true
    });

    podTree = concat(podTree, {
    inputFiles: ['**/*.js'],
    outputFile: '/' + outputPath + 'index.js'
    });

    podTree = replace(podTree, {
    files: ['**/*.js'],
    pattern: {
    match: /assets/g,
    replacement: 'mobile-web/pods'
    }
    });

    additionalTrees.push(podTree);
    }


    extractModule('router', 'router');
    extractModule('secure-router', 'router');

    extractPod('secure/login');

    return MergeTrees(additionalTrees.concat(app.toTree()));
    };
    return app.toTree(additionalTrees);
    };
  3. billpull revised this gist Nov 13, 2015. 1 changed file with 6 additions and 6 deletions.
    12 changes: 6 additions & 6 deletions output
    Original file line number Diff line number Diff line change
    @@ -2,14 +2,14 @@ desired output

    assets/
    └── pods/
    ── secure/
    └── login.js
    ── secure/
    └── login.js

    current output
    assets/
    └── pods/
    ── secure/
    └── login/
    | | └── router.js
    | | └── template.hbs
    ── secure/
    └── login/
    | └── router.js
    | └── template.hbs

  4. billpull revised this gist Nov 12, 2015. 1 changed file with 15 additions and 0 deletions.
    15 changes: 15 additions & 0 deletions output
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,15 @@
    desired output

    assets/
    └── pods/
    ├── secure/
    │ └── login.js

    current output
    assets/
    └── pods/
    ├── secure/
    │ └── login/
    | | └── router.js
    | | └── template.hbs

  5. billpull created this gist Nov 12, 2015.
    58 changes: 58 additions & 0 deletions ember-cli-build.js
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,58 @@
    /* global require, module */
    var stew = require('broccoli-stew');
    var Funnel = require('broccoli-funnel');
    var MergeTrees = require('broccoli-merge-trees');
    var esTranspiler = require('broccoli-babel-transpiler');
    var EmberApp = require('ember-cli/lib/broccoli/ember-app');

    module.exports = function(defaults) {
    var app = new EmberApp(defaults, {
    storeConfigInMeta: false,
    sassOptions: {
    includePaths: [
    'bower_components/bourbon/app/assets/stylesheets/',
    'bower_components/neat/app/assets/stylesheets/',
    'bower_components/bitters/app/assets/stylesheets/'
    ]
    }
    });

    var additionalTrees = [];
    var appTree = app.appAndDependencies();

    if (EmberApp.env() !== "production") {
    var jQuery = stew.find(appTree, "bower_components/jquery/dist/jquery.min.js");
    jQuery = stew.mv(jQuery, "bower_components/jquery/dist/jquery.min.js", "assets/jquery.js");

    additionalTrees = additionalTrees.concat(jQuery);
    }

    function extractModule(fileName, moduleName) {
    var module = stew.find(appTree, 'mobile-web/'+ fileName + '.js');
    moduleName = "mobile-web/" + moduleName;
    module = esTranspiler(module, {
    modules: "amdStrict",
    moduleIds: true,
    moduleId: moduleName
    });
    module = stew.mv(module, 'mobile-web/'+ fileName + '.js', 'assets/'+ fileName + '.js');
    stew.rm(appTree, 'mobile-web/'+ fileName + '.js');
    additionalTrees = additionalTrees.concat(module);
    }

    function extractPod(podPath) {
    var srcPodPath = 'app/pods/' + podPath;
    var outputFile = 'assets/' + podPath + '/';
    var podFunnel = new Funnel(srcPodPath, {
    destDir: outputFile
    });
    additionalTrees = additionalTrees.concat(podFunnel);
    }

    extractModule('router', 'router');
    extractModule('secure-router', 'router');

    extractPod('secure/login');

    return MergeTrees(additionalTrees.concat(app.toTree()));
    };