-
Notifications
You must be signed in to change notification settings - Fork 45
/
Copy pathBrocfile.js
106 lines (90 loc) · 2.81 KB
/
Brocfile.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
var filterCoffeeScript = require('broccoli-coffee')
var filterTemplates = require('broccoli-template')
var uglifyJavaScript = require('broccoli-uglify-js')
var compileES6 = require('broccoli-es6-concatenator')
var compileSass = require('broccoli-sass')
var pickFiles = require('broccoli-funnel')
var mergeTrees = require('broccoli-merge-trees')
var findBowerTrees = require('broccoli-bower')
var env = require('broccoli-env').getEnv()
function preprocess (tree) {
// filter .hbs and .handlebars files, use the Ember handlebar compiler
tree = filterTemplates(tree, {
extensions: ['hbs', 'handlebars'],
compileFunction: 'Ember.Handlebars.compile'
})
// compile coffee script, bare: no top-level function wrapper
tree = filterCoffeeScript(tree, {
bare: true
})
return tree
}
// create tree for files in the app folder
var app = 'app'
app = pickFiles(app, {
srcDir: '/',
destDir: 'appkit' // move under appkit namespace
})
app = preprocess(app)
// create tree for files in the styles folder
var styles = 'styles'
styles = pickFiles(styles, {
srcDir: '/',
destDir: 'appkit' // move under appkit namespace
})
styles = preprocess(styles)
// create tree for files in the test folder
var tests = 'tests'
tests = pickFiles(tests, {
srcDir: '/',
destDir: 'appkit/tests' // move under appkit namespace
})
tests = preprocess(tests)
// create tree for vendor folder (no filters needed here)
var vendor = 'vendor'
// include app, styles and vendor trees
var sourceTrees = [app, styles, vendor]
// include tests if not in production
if (env !== 'production') {
sourceTrees.push(tests)
}
// Add bower dependencies
// findBowerTrees uses heuristics to pick the lib directory and/or main files,
// and returns an array of trees for each bower package found.
sourceTrees = sourceTrees.concat(findBowerTrees())
// merge array into tree
var appAndDependencies = new mergeTrees(sourceTrees, { overwrite: true })
// Transpile ES6 modules and concatenate them,
// recursively including modules referenced by import statements.
var appJs = compileES6(appAndDependencies, {
// Prepend contents of vendor/loader.js
loaderFile: 'loader.js',
ignoredModules: [
'ember/resolver'
],
inputFiles: [
'appkit/**/*.js'
],
legacyFilesToAppend: [
'jquery.js',
'handlebars.js',
'ember.js',
'ember-data.js',
'ember-resolver.js'
],
wrapInEval: env !== 'production',
outputFile: '/assets/app.js'
})
// compile sass
var appCss = compileSass(sourceTrees, 'appkit/app.scss', 'assets/app.css')
if (env === 'production') {
// minify js
appJs = uglifyJavaScript(appJs, {
// mangle: false,
// compress: false
})
}
// create tree for public folder (no filters needed here)
var publicFiles = 'public'
// merge js, css and public file trees, and export them
module.exports = mergeTrees([appJs, appCss, publicFiles])