ember-cli/ember-twiddle

View on GitHub
lib/build-twiddle-ember-tree.js

Summary

Maintainability
A
1 hr
Test Coverage
/* global require, module */

function buildTwiddleVendorTree() {
  const funnel = require('broccoli-funnel');
  const concat = require('broccoli-concat');
  const mergeTrees = require('broccoli-merge-trees');
  const babelTranspiler = require('broccoli-babel-transpiler');
  const babelOpts = require('./babel-opts');
  const typeScriptOpts = require('./typescript-opts');
  const { debug } = require('broccoli-stew');

  const DEBUG = false;

  let emberDataShims = funnel('vendor', {
    files: ['ember-data-shims.js']
  });

  let shimsTree = funnel('vendor' , {
    files: ['app-shims.js']
  });

  let debugTree = funnel('vendor/shims', {
    destDir: 'shims'
  });

  let baseResolverTree = funnel('node_modules/ember-resolver/addon', {
    destDir: 'ember-resolver'
  });

  let transpiledResolverTree = babelTranspiler(baseResolverTree, babelOpts());

  let baseInitializersTree = funnel('node_modules/ember-load-initializers/addon', {
    destDir: 'ember-load-initializers'
  });

  let transpiledInitializersTree = babelTranspiler(baseInitializersTree, typeScriptOpts());

  let mergedDepsTree = mergeTrees([
    shimsTree,
    debugTree,
    transpiledInitializersTree,
    transpiledResolverTree,
    emberDataShims
  ]);

  let twiddleVendorTree = concat(mergedDepsTree, {
    inputFiles: [
      'shims/debug.js',
      'shims/deprecations.js',
      'shims/htmlbars-inline-precompile.js',
      'app-shims.js',
      'ember-load-initializers/**/*.js',
      'ember-resolver/**/*.js',
      'ember-data-shims.js'
    ],
    outputFile: '/assets/twiddle-deps.js'
  });

  if (DEBUG) {
    twiddleVendorTree = debug(twiddleVendorTree);
  }

  return twiddleVendorTree;
}

module.exports = buildTwiddleVendorTree;