From 404091401400478ef55088888b8ec383e02a17d6 Mon Sep 17 00:00:00 2001 From: Josef Brandl Date: Sun, 30 Mar 2014 04:24:22 +0200 Subject: [PATCH] Refactored Brocfile, started Implemenation for rootURL, moved index.html into app/ --- blueprint/Brocfile.js | 130 +++++++++++++++------------ blueprint/{public => app}/index.html | 4 + blueprint/package.json | 3 +- blueprint/public/.gitkeep | 0 blueprint/tests/index.html | 4 + 5 files changed, 85 insertions(+), 56 deletions(-) rename blueprint/{public => app}/index.html (74%) create mode 100644 blueprint/public/.gitkeep diff --git a/blueprint/Brocfile.js b/blueprint/Brocfile.js index c7f169de9e..2802e3366b 100644 --- a/blueprint/Brocfile.js +++ b/blueprint/Brocfile.js @@ -1,102 +1,113 @@ /* global require, module */ var uglifyJavaScript = require('broccoli-uglify-js'); +var replace = require('broccoli-replace'); var compileES6 = require('broccoli-es6-concatenator'); -var p = require('ember-cli/lib/preprocessors'); var pickFiles = require('broccoli-static-compiler'); var env = require('broccoli-env').getEnv(); +var p = require('ember-cli/lib/preprocessors'); var preprocessCss = p.preprocessCss; var preprocessTemplates = p.preprocessTemplates; var preprocessJs = p.preprocessJs; module.exports = function (broccoli) { - var app = 'app'; - var tests = 'tests'; - var publicFiles = 'public'; - var vendor = 'vendor'; - var config = 'config'; - var styles; - var qunit; - var testsIndex; - - app = pickFiles(app, { - srcDir: '/', - destDir: '<%= modulePrefix %>/' - }); - app = preprocessTemplates(app); + var prefix = '<%= modulePrefix %>'; + var rootURL = '/'; + - config = pickFiles(config, { + // index.html + + var indexHTML = pickFiles('app', { srcDir: '/', - files: [ - 'environment.*', - 'environments/' + env + '.*' - ], - destDir: '<%= modulePrefix %>/config' + files: ['index.html'], + destDir: '/' + }); + + indexHTML = replace(indexHTML, { + files: ['index.html'], + patterns: [{ match: /\{\{rootURL\}\}/g, replacement: rootURL}] }); - testsIndex = pickFiles(tests, { + var testsIndexHTML = pickFiles('tests', { srcDir: '/', files: ['index.html'], destDir: '/tests' }); - tests = pickFiles(tests, { + testsIndexHTML = replace(testsIndexHTML, { + files: ['tests/index.html'], + patterns: [{ match: /\{\{rootURL\}\}/g, replacement: rootURL}] + }); + + + + // sourceTrees, appAndDependencies for CSS and JavaScript + + var app = pickFiles('app', { srcDir: '/', - destDir: '<%= modulePrefix %>/tests' + destDir: prefix }); - qunit = pickFiles(vendor, { - srcDir: '/qunit/qunit', - files: ['qunit.css'], - destDir: '/assets/' + app = preprocessTemplates(app); + + var config = pickFiles('config', { + srcDir: '/', + files: [ + 'environment.*', + 'environments/' + env + '.*' + ], + destDir: prefix + '/config' }); - tests = preprocessTemplates(tests); + var sourceTrees = [app, config, 'vendor'].concat(broccoli.bowerTrees()); - var sourceTrees = [ - app, - config, - vendor - ]; + if (env !== 'production') { + var tests = pickFiles('tests', { + srcDir: '/', + destDir: prefix + '/tests' + }); + + tests = preprocessTemplates(tests); + sourceTrees.push(tests); + } + + var appAndDependencies = new broccoli.MergedTree(sourceTrees); + + + // JavaScript var legacyFilesToAppend = [ - '<%= modulePrefix %>/config/environment.js', - '<%= modulePrefix %>/config/environments/' + env + '.js', + prefix + '/config/environment.js', + prefix + '/config/environments/' + env + '.js', 'jquery.js', 'handlebars.js', 'ember.js', 'ic-ajax/main.js', 'ember-data.js', - 'ember-resolver.js' + 'ember-resolver.js', + 'ember-shim.js' ]; if (env !== 'production') { legacyFilesToAppend.push( - 'ember-shim.js', 'qunit/qunit/qunit.js', 'qunit-shim.js', 'ember-qunit/dist/named-amd/main.js' ); - - sourceTrees.push(tests); } - sourceTrees = sourceTrees.concat(broccoli.bowerTrees()); - - var appAndDependencies = new broccoli.MergedTree(sourceTrees); + var applicationJs = preprocessJs(appAndDependencies, '/', prefix); - appAndDependencies = preprocessJs(appAndDependencies, '/', '<%= modulePrefix %>'); - - var applicationJs = compileES6(appAndDependencies, { + applicationJs = compileES6(applicationJs, { loaderFile: 'loader/loader.js', ignoredModules: [ 'ember/resolver', 'ember-qunit' ], inputFiles: [ - '<%= modulePrefix %>/**/*.js' + prefix + '/**/*.js' ], legacyFilesToAppend: legacyFilesToAppend, @@ -104,8 +115,6 @@ module.exports = function (broccoli) { outputFile: '/assets/app.js' }); - styles = preprocessCss(sourceTrees, '<%= modulePrefix %>/styles', '/assets'); - if (env === 'production') { applicationJs = uglifyJavaScript(applicationJs, { mangle: false, @@ -113,15 +122,26 @@ module.exports = function (broccoli) { }); } - var outputTrees = [ - applicationJs, - publicFiles, - styles - ]; + + // Styles + + styles = preprocessCss(sourceTrees, prefix + '/styles', '/assets'); + + qunitStyles = pickFiles('vendor', { + srcDir: '/qunit/qunit', + files: ['qunit.css'], + destDir: '/assets/' + }); + + + // Ouput + + var outputTrees = [indexHTML, applicationJs, 'public', styles]; if (env !== 'production') { - outputTrees.push(qunit, testsIndex); + outputTrees.push(qunitStyles, testsIndexHTML); } + return outputTrees; }; diff --git a/blueprint/public/index.html b/blueprint/app/index.html similarity index 74% rename from blueprint/public/index.html rename to blueprint/app/index.html index 10bd20006e..6d5773a808 100644 --- a/blueprint/public/index.html +++ b/blueprint/app/index.html @@ -7,6 +7,10 @@ + + diff --git a/blueprint/package.json b/blueprint/package.json index fa139aaab3..df69074d01 100644 --- a/blueprint/package.json +++ b/blueprint/package.json @@ -28,6 +28,7 @@ "broccoli-static-compiler": "0.1.2", "broccoli-template": "0.1.0", "broccoli-uglify-js": "0.1.1", - "broccoli-env": "0.0.1" + "broccoli-env": "0.0.1", + "broccoli-replace": "^0.1.5" } } diff --git a/blueprint/public/.gitkeep b/blueprint/public/.gitkeep new file mode 100644 index 0000000000..e69de29bb2 diff --git a/blueprint/tests/index.html b/blueprint/tests/index.html index 565b9787c4..b04166544c 100644 --- a/blueprint/tests/index.html +++ b/blueprint/tests/index.html @@ -7,6 +7,10 @@ + +