Our setup details below. Our Brocfile.js is quite custom so there might be an issue with something there.
app: 373 files, 1.4MB total
bower_components: 1075 files, 14MB total
node_modules: 39 000 files, 184MB
vendor: 10 files, 193KB
package.json
{
"name": "x",
"version": "0.0.0",
"private": true,
"directories": {
"doc": "doc",
"test": "test"
},
"scripts": {
"start": "ember server",
"install": "bower install --config.interactive=false",
"build": "ember build",
"build-deployment": "ember build --environment=production",
"test": "ember test --environment=test"
},
"repository": "https://github.com/stefanpenner/ember-cli",
"engines": {
"node": ">= 0.10.5"
},
"author": "",
"license": "MIT",
"devDependencies": {
"broccoli-asset-rev": "^2.0.0",
"broccoli-ember-hbs-template-compiler": "^1.7.0",
"ember-cli": "0.1.5",
"ember-cli-content-security-policy": "0.3.0",
"ember-cli-dependency-checker": "0.0.7",
"ember-cli-inject-live-reload": "^1.3.0",
"ember-cli-qunit": "0.1.2",
"ember-data": "1.0.0-beta.11",
"express": "^4.10.2",
"glob": "^4.0.6",
"body-parser": "^1.9.2",
"bower": "^1.3.12",
"broccoli-autoprefixer": "^1.1.0",
"broccoli-file-creator": "^0.1.0",
"broccoli-gzip": "^0.2.0",
"broccoli-merge-trees": "^0.2.1",
"broccoli-sass": "^0.3.3",
"broccoli-static-compiler": "^0.2.1",
"connect-restreamer": "^1.0.1",
"dotenv": "^0.4.0",
"ember-cli-pagination": "^0.5.2",
"http-proxy": "^1.6.2",
"originate": "0.1.5",
"phantomjs": "^1.9.12",
"qd-ajax": "git://github.com/hooktstudios/qd-ajax.git#master"
}
}
bower.json
{
"name": "x",
"dependencies": {
"ember": "1.7.1",
"ember-cli-shims": "stefanpenner/ember-cli-shims#0.0.3",
"ember-cli-test-loader": "rjackson/ember-cli-test-loader#0.0.4",
"ember-data": "v1.0.0-beta.11",
"ember-easyForm": "http://builds.dockyard.com.s3.amazonaws.com/ember-easyForm/release/daily/20140207/ember-easyForm.js",
"ember-flash-message": "https://raw.githubusercontent.com/ryanto/ember-flash-message/308adc8288844eb918b869d3adae6f1d1b913260/flash-message.js",
"ember-i18n": "jamesarosen/ember-i18n#52a3b55ac95aa79b8810cca05588ed5638bae299",
"ember-load-initializers": "stefanpenner/ember-load-initializers#0.0.2",
"ember-qunit": "~0.1.8",
"ember-qunit-notifications": "0.0.4",
"ember-resolver": "~0.1.11",
"handlebars": "~1.3.0",
"html5shiv": "~3.7.2",
"ic-ajax": "~2.0.1",
"jquery": "^1.11.1",
"jquery-file-upload": "~9.7.0",
"loader.js": "stefanpenner/loader.js#1.0.1",
"mediaelement": "~2.16.1",
"moment": "~2.8.3",
"normalize-scss": "~3.0.1",
"numeral": "~1.5.3",
"qunit": "~1.15.0",
"rangy-official": "~1.3.0-alpha.20140827",
"route-recognizer": "~0.1.1",
"video.js": "~4.11.3",
"videojs-vimeo": "eXon/videojs-vimeo#54f88a4de0e24ef77c1a8287462db64e2f6f6147",
"videojs-youtube": "~1.2.7"
},
"resolutions": {
"video.js": "~4.11.3",
"route-recognizer": "~0.1.1"
}
}
Brocfile.js
/* global require, module */
var glob = require('glob');
var path = require('path');
var mergeTrees = require('broccoli-merge-trees');
var compileSass = require('broccoli-sass');
var assetRev = require('broccoli-asset-rev');
var pickFiles = require('broccoli-static-compiler');
var autoprefixer = require('broccoli-autoprefixer');
var gzip = require('broccoli-gzip');
var writeFile = require('broccoli-file-creator');
var appDotEnv = require('./config/app-dotenv');
var EmberApp = require('ember-cli/lib/broccoli/ember-app');
var app = new EmberApp({
name: require('./package.json').name,
// Disabled here to avoid double fingerprints
fingerprint: {
enabled: false
},
vendorFiles: {
polyfills: 'vendor/polyfills.js'
},
sourcemaps: {
enabled: false,
extensions: []
}
});
app.import('vendor/raven.js');
app.import({
development: 'bower_components/ember-data/ember-data.js',
production: 'bower_components/ember-data/ember-data.prod.js'
});
app.import({
development: 'bower_components/moment/min/moment-with-locales.js',
production: 'bower_components/moment/min/moment-with-locales.min.js'
});
app.import({
development: 'bower_components/video.js/dist/video-js/video-js.css',
production: 'bower_components/video.js/dist/video-js/video-js.min.css'
})
app.import({
development: 'bower_components/video.js/dist/video-js/video.dev.js',
production: 'bower_components/video.js/dist/video-js/video.js'
});
app.import({
development: 'bower_components/videojs-youtube/src/youtube.js',
production: 'bower_components/videojs-youtube/dist/vjs.youtube.js'
})
app.import({
development: 'bower_components/videojs-vimeo/src/media.vimeo.js',
production: 'bower_components/videojs-vimeo/vjs.vimeo.js'
})
app.import('bower_components/ember-i18n/lib/i18n.js');
app.import('bower_components/jquery-file-upload/js/vendor/jquery.ui.widget.js');
app.import('bower_components/jquery-file-upload/js/jquery.iframe-transport.js');
app.import('bower_components/jquery-file-upload/js/jquery.fileupload.js');
app.import('vendor/transloadit.js');
app.import('vendor/transloadit.fr.js');
app.import('vendor/jquery.payment.js');
app.import('vendor/jquery.number.js');
app.import('vendor/ios-drag-drop.js');
app.import('bower_components/ember-flash-message/index.js');
app.import('bower_components/ember-easyForm/index.js');
app.import('bower_components/numeral/numeral.js');
app.import({
development: 'bower_components/rangy-official/rangy-core.js',
production: 'bower_components/rangy-official/rangy-core.min.js'
});
// Use `app.import` to add additional libraries to the generated
// output files.
//
// If you need to use different assets in different
// environments, specify an object as the first parameter. That
// object's keys should be the environment name and the values
// should be the asset to use in that environment.
//
// If the library that you are including contains AMD or ES6
// modules that you would like to import into your application
// please specify an object with the list of modules as keys
// along with the exports of each module as its value.
// Add clients custom styles
var clientTrees = glob.sync('clients/**/styles.scss').map(function(file) {
var dirname = path.dirname(file),
clientName = dirname.split('/').pop(),
options = {},
tree;
if (app.env === 'production') options = { outputStyle: 'compressed' };
tree = compileSass([dirname], 'styles.scss', 'assets/' + clientName + '.css', options);
return tree;
});
var videojsAssets = pickFiles('bower_components/video.js/dist/video-js', {
srcDir: '/',
files: ['font/vjs.*', 'video-js.swf'],
destDir: '/assets'
});
var fonts = pickFiles('app/fonts', {
srcDir: '/',
destDir: '/assets'
});
var singleVendors = pickFiles('vendor', {
srcDir: '/',
files: ['es5-shim.js', 'backend.js'],
destDir: '/assets'
})
var html5shiv = pickFiles('bower_components/html5shiv/dist', {
srcDir: '/',
files: ['html5shiv.js'],
destDir: '/assets'
})
var tree = mergeTrees(clientTrees.concat(app.toTree(), videojsAssets, fonts, singleVendors, html5shiv));
// Add fingerprints & gziping
if (app.env === 'production') {
var options = {
generateRailsManifest: true,
extensions: ['js', 'css', 'png', 'jpg', 'gif', 'eot', 'svg', 'ttf', 'woff'],
replaceExtensions: ['html', 'js', 'css', 'hbs']
};
// Temporary fix for broccoli-asset-rev#18 & videojs vendor
options.exclude = [
'vjs.eot',
'vjs.svg',
'vjs.ttf',
'vjs.woff',
'video-js.swf'
];
if(appDotEnv.ASSET_HOST){
options.prepend = 'https://' + appDotEnv.ASSET_HOST + '/';
}
tree = assetRev(tree, options);
gzipOptions = {
extensions: ['js', 'css', 'svg'],
keepUncompressed: true
}
tree = gzip(tree, gzipOptions)
}
tree = autoprefixer(tree);
// Robots.txt
var robotsSrc = 'User-agent: *';
if(appDotEnv.ROBOTS_DISALLOW === 'true') {
robotsSrc += '\nDisallow: /';
} else {
robotsSrc += '\nAllow: /';
}
var robots = writeFile('/robots.txt', robotsSrc);
tree = mergeTrees([tree, robots]);
module.exports = tree;