-
Notifications
You must be signed in to change notification settings - Fork 17
/
Copy pathember-cli-build.js
118 lines (112 loc) · 4.45 KB
/
ember-cli-build.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
106
107
108
109
110
111
112
113
114
115
116
117
118
/* eslint-env node */
const EmberApp = require('ember-cli/lib/broccoli/ember-app');
const Funnel = require('broccoli-funnel');
const jQueryPackage = require('jquery/package.json');
const autoprefixer = require('autoprefixer');
module.exports = function(defaults) {
// const EMBER_DATA_VERSION = defaults.project.addonPackages['ember-data'].pkg.version;
const EMBER_VERSION = defaults.project.addonPackages['ember-source'].pkg.version;
const JQUERY_VERSION = jQueryPackage.version;
// Values chosen abritrarily, feel free to change
const LEAN_BUILD = ['production'].includes(EmberApp.env());
// Reference: https://github.com/travis-ci/travis-web/blob/master/ember-cli-build.js
const app = new EmberApp(defaults, {
sourcemaps: {
enabled: true,
extensions: ['js'],
},
fingerprint: {
extensions: ['js', 'css', 'map'],
},
minifyJS: { enabled: LEAN_BUILD },
minifyCSS: { enabled: LEAN_BUILD },
vendorFiles: !LEAN_BUILD ? {} : {
// These will be CDN'd in via "inlineContent"
// Ember doesn't like it when these are set to true for some reason
'handlebars.js': false,
'ember.js': false,
'jquery.js': false,
},
sassOptions: {
includePaths: [
'node_modules/bootstrap-sass/assets/stylesheets',
'node_modules/@centerforopenscience/osf-style/sass',
'node_modules/font-awesome/scss',
'node_modules/toastr',
],
},
inlineContent: {
raven: {
// Only include raven in production builds, because why not
enabled: EmberApp.env() === 'production',
content: `
<script src="https://cdn.ravenjs.com/3.22.1/ember/raven.min.js"></script>
<script>
var encodedConfig = document.head.querySelector("meta[name$='/config/environment']").content;
var config = JSON.parse(unescape(encodedConfig));
if (config.sentryDSN) {
Raven.config(config.sentryDSN, config.sentryOptions || {}).install();
}
</script>
`.trim(),
},
cdn: {
enabled: LEAN_BUILD,
content: `
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/${JQUERY_VERSION}/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/ember.js/${EMBER_VERSION}/ember.min.js"></script>
`,
// TODO Figure out how to CDN ember-data
// The CDN version appears to load a deprecated interface that breaks stuff
// cdnjs.cloudflare.com/ajax/libs/ember-data.js/${EMBER_DATA_VERSION}/ember-data.js
},
assets: {
enabled: true,
},
},
minifyHTML: {
enabled: LEAN_BUILD,
htmlFiles: ['index.html'],
minifierOptions: {},
},
'ember-bootstrap': {
bootstrapVersion: 3,
importBootstrapCSS: false,
importBootstrapFont: false,
},
cssModules: {
headerModules: [
'reviews/styles/headers',
],
plugins: [
autoprefixer({ grid: true }),
],
},
'ember-cli-babel': {
includePolyfill: true,
},
});
// 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.
const assets = [
new Funnel('node_modules/font-awesome/fonts', {
srcDir: '/',
destDir: '/assets/fonts',
}),
new Funnel('node_modules/@centerforopenscience/osf-style/img', {
srcDir: '/',
destDir: '/img',
}),
];
return app.toTree(assets);
};