@@ -4,13 +4,12 @@ module.exports = function(defaults) {
4
4
5
5
const EmberApp = require ( 'ember-cli/lib/broccoli/ember-app' ) ;
6
6
const funnel = require ( 'broccoli-funnel' ) ;
7
- const concat = require ( 'broccoli-concat' ) ;
8
7
const mergeTrees = require ( 'broccoli-merge-trees' ) ;
9
8
const babelTranspiler = require ( 'broccoli-babel-transpiler' ) ;
10
- const Rollup = require ( 'broccoli-rollup' ) ;
11
9
const browserify = require ( 'browserify' ) ;
12
10
const path = require ( 'path' ) ;
13
11
const fs = require ( 'fs' ) ;
12
+ const babelOpts = require ( './lib/babel-opts' ) ;
14
13
15
14
const env = EmberApp . env ( ) ;
16
15
const deployTarget = process . env . DEPLOY_TARGET ;
@@ -27,7 +26,7 @@ module.exports = function(defaults) {
27
26
}
28
27
}
29
28
30
- const blueprintsCode = getEmberCLIBlueprints ( ) ;
29
+ const blueprintsCode = require ( './lib/get-ember-cli-blueprints' ) ( ) ;
31
30
32
31
let app = new EmberApp ( defaults , {
33
32
SRI : {
@@ -129,41 +128,40 @@ module.exports = function(defaults) {
129
128
} ) ;
130
129
testLoaderTree = babelTranspiler ( testLoaderTree , babelOpts ( ) ) ;
131
130
132
- let emberDataShims = funnel ( 'vendor' , {
133
- files : [ 'ember-data-shims.js' ]
134
- } ) ;
135
-
136
- let bowerTree = funnel ( 'bower_components' ) ;
137
- let shimsTree = funnel ( 'node_modules/ember-cli-shims/vendor/ember-cli-shims' , {
138
- destDir : 'ember-cli-shims'
139
- } ) ;
140
-
141
- let baseResolverTree = funnel ( 'node_modules/ember-resolver/addon' , {
142
- destDir : 'ember-resolver'
143
- } ) ;
131
+ let finalQUnitTree = buildQUnitTree ( app ) ;
144
132
145
- let transpiledResolverTree = babelTranspiler ( baseResolverTree , babelOpts ( ) ) ;
133
+ let twiddleVendorTree = buildTwiddleVendorTree ( ) ;
146
134
147
- let baseInitializersTree = funnel ( 'node_modules/ember-load-initializers/addon' , {
148
- destDir : 'ember-load-initializers'
149
- } ) ;
135
+ return app . toTree ( mergeTrees ( [ twiddleVendorTree , loaderTree , testLoaderTree , finalQUnitTree ] ) ) ;
136
+ } ;
150
137
151
- let transpiledInitializersTree = babelTranspiler ( baseInitializersTree , babelOpts ( ) ) ;
138
+ function buildQUnitTree ( app ) {
139
+ const funnel = require ( 'broccoli-funnel' ) ;
140
+ const concat = require ( 'broccoli-concat' ) ;
141
+ const mergeTrees = require ( 'broccoli-merge-trees' ) ;
142
+ const babelTranspiler = require ( 'broccoli-babel-transpiler' ) ;
143
+ const Rollup = require ( 'broccoli-rollup' ) ;
144
+ const path = require ( 'path' ) ;
145
+ const babelOpts = require ( './lib/babel-opts' ) ;
152
146
153
147
let preprocessJs = app . registry . registry . js [ 0 ] . toTree ;
148
+
154
149
let buildPreprocessedAddon = function ( addonName ) {
155
150
return preprocessJs ( path . dirname ( require . resolve ( addonName ) ) + '/addon-test-support' , {
156
151
registry : app . registry
157
152
} ) ;
158
153
} ;
154
+
159
155
let qunitTree = buildPreprocessedAddon ( 'ember-qunit' ) ;
160
156
let testHelpersTreeForQUnit = buildPreprocessedAddon ( '@ember/test-helpers' ) ;
157
+
161
158
let testLoaderTreeForQUnit = funnel ( "node_modules/ember-cli-test-loader/addon-test-support" , {
162
159
files : [ 'index.js' ] ,
163
160
getDestinationPath : function ( ) {
164
161
return "ember-cli-test-loader/test-support/index.js" ;
165
162
}
166
163
} ) ;
164
+
167
165
testLoaderTreeForQUnit = new Rollup ( testLoaderTreeForQUnit , {
168
166
rollup : {
169
167
input : 'ember-cli-test-loader/test-support/index.js' ,
@@ -176,121 +174,56 @@ module.exports = function(defaults) {
176
174
]
177
175
}
178
176
} ) ;
177
+
179
178
testLoaderTreeForQUnit = babelTranspiler ( testLoaderTreeForQUnit , babelOpts ( ) ) ;
179
+
180
180
let finalQUnitTree = concat ( mergeTrees ( [ qunitTree , testHelpersTreeForQUnit , testLoaderTreeForQUnit ] ) , {
181
181
inputFiles : [ '**/*.js' ] ,
182
182
outputFile : '/assets/ember-qunit.js'
183
183
} ) ;
184
184
185
- let mergedDepsTree = mergeTrees ( [ bowerTree , shimsTree , transpiledInitializersTree , transpiledResolverTree , emberDataShims ] ) ;
186
-
187
- let twiddleVendorTree = concat ( mergedDepsTree , {
188
- inputFiles : [
189
- 'ember-cli-shims/app-shims.js' ,
190
- 'ember-load-initializers/**/*.js' ,
191
- 'ember-resolver/**/*.js' ,
192
- 'ember-data-shims.js'
193
- ] ,
194
- outputFile : '/assets/twiddle-deps.js'
195
- } ) ;
196
-
197
- return app . toTree ( mergeTrees ( [ twiddleVendorTree , loaderTree , testLoaderTree , finalQUnitTree ] ) ) ;
198
- } ;
185
+ return finalQUnitTree ;
186
+ }
199
187
200
- function buildAddonTree ( addonName ) {
188
+ function buildTwiddleVendorTree ( ) {
201
189
const funnel = require ( 'broccoli-funnel' ) ;
202
190
const concat = require ( 'broccoli-concat' ) ;
191
+ const mergeTrees = require ( 'broccoli-merge-trees' ) ;
203
192
const babelTranspiler = require ( 'broccoli-babel-transpiler' ) ;
204
- const path = require ( 'path ' ) ;
193
+ const babelOpts = require ( './lib/babel-opts ' ) ;
205
194
206
- let baseTree = funnel ( path . dirname ( require . resolve ( addonName ) ) , {
207
- include : [ '**/*.js' ] ,
208
- exclude : [ 'index.js' , 'ember-cli-build.js' , 'testem.js' , 'lib/**/*.js' , 'config/**/*.js' , 'tests/**/*.js' ]
195
+ let emberDataShims = funnel ( 'vendor' , {
196
+ files : [ 'ember-data-shims.js' ]
209
197
} ) ;
210
198
211
- let transpiledTree = babelTranspiler ( baseTree , babelOpts ( ) ) ;
199
+ let bowerTree = funnel ( 'bower_components' ) ;
200
+ let shimsTree = funnel ( 'node_modules/ember-cli-shims/vendor/ember-cli-shims' , {
201
+ destDir : 'ember-cli-shims'
202
+ } ) ;
212
203
213
- return concat ( transpiledTree , {
214
- inputFiles : [ '**/*.js' ] ,
215
- outputFile : '/assets/' + addonName + '.js'
204
+ let baseResolverTree = funnel ( 'node_modules/ember-resolver/addon' , {
205
+ destDir : 'ember-resolver'
216
206
} ) ;
217
- }
218
207
219
- function babelOpts ( ) {
220
- return {
221
- presets : [ 'babel-preset-es2017' ] . map ( require . resolve ) ,
222
- moduleIds : true ,
223
- plugins : [
224
- [ 'transform-es2015-modules-amd' , {
225
- loose : true ,
226
- noInterop : true
227
- } ] ,
228
- [ 'babel-plugin-ember-modules-api-polyfill' ]
229
- ]
230
- } ;
231
- }
208
+ let transpiledResolverTree = babelTranspiler ( baseResolverTree , babelOpts ( ) ) ;
232
209
233
- // This copies code out of ember-cli's blueprints into
234
- // app/lib/blueprints so we don't have to maintain our
235
- // own blueprints
236
- function getEmberCLIBlueprints ( ) {
237
- const fs = require ( 'fs' ) ;
238
- const path = require ( 'path' ) ;
239
- let fileMap = { } ;
240
-
241
- let blueprintFiles = {
242
- "cliBlueprintFiles" : {
243
- "path" : "node_modules/ember-cli" ,
244
- "files" : {
245
- "app" : "app/files/app/app.js" ,
246
- "router" : "app/files/app/router.js" ,
247
- "test-helper" : 'app/files/tests/test-helper.js' ,
248
- "test-resolver" : 'app/files/tests/helpers/resolver.js' ,
249
- "test-destroy-app" : 'app/files/tests/helpers/destroy-app.js' ,
250
- "test-module-for-acceptance" : 'app/files/tests/helpers/module-for-acceptance.js'
251
- }
252
- } ,
253
- "legacyBlueprintFiles" : {
254
- "path" : path . dirname ( require . resolve ( 'ember-cli-legacy-blueprints' ) ) ,
255
- "files" : {
256
- 'component-hbs' : 'component/files/__root__/__templatepath__/__templatename__.hbs' ,
257
- 'component-js' : 'component/files/__root__/__path__/__name__.js' ,
258
- 'controller' : 'controller/files/__root__/__path__/__name__.js' ,
259
- 'route' : 'route/files/__root__/__path__/__name__.js' ,
260
- 'service' : 'service/files/__root__/__path__/__name__.js' ,
261
- 'template' : 'template/files/__root__/__path__/__name__.hbs' ,
262
- 'helper' : 'helper/files/__root__/helpers/__name__.js' ,
263
- 'controller-test' : 'controller-test/qunit-files/tests/unit/__path__/__test__.js' ,
264
- 'route-test' : 'route-test/qunit-files/tests/unit/__path__/__test__.js' ,
265
- 'service-test' : 'service-test/qunit-files/tests/unit/__path__/__test__.js' ,
266
- 'component-test' : 'component-test/qunit-files/tests/__testType__/__path__/__test__.js' ,
267
- 'acceptance-test' : 'acceptance-test/qunit-files/tests/acceptance/__name__-test.js'
268
- }
269
- }
270
- } ;
210
+ let baseInitializersTree = funnel ( 'node_modules/ember-load-initializers/addon' , {
211
+ destDir : 'ember-load-initializers'
212
+ } ) ;
271
213
272
- for ( let list in blueprintFiles ) {
273
- let blueprintPath = blueprintFiles [ list ] . path ;
274
- let files = blueprintFiles [ list ] . files ;
275
- for ( let blueprintName in files ) {
276
- let filePath = blueprintPath + '/blueprints/' + files [ blueprintName ] ;
277
- fileMap [ blueprintName ] = fs . readFileSync ( filePath ) . toString ( ) ;
278
- }
279
- }
214
+ let transpiledInitializersTree = babelTranspiler ( baseInitializersTree , babelOpts ( ) ) ;
215
+
216
+ let mergedDepsTree = mergeTrees ( [ bowerTree , shimsTree , transpiledInitializersTree , transpiledResolverTree , emberDataShims ] ) ;
217
+
218
+ let twiddleVendorTree = concat ( mergedDepsTree , {
219
+ inputFiles : [
220
+ 'ember-cli-shims/app-shims.js' ,
221
+ 'ember-load-initializers/**/*.js' ,
222
+ 'ember-resolver/**/*.js' ,
223
+ 'ember-data-shims.js'
224
+ ] ,
225
+ outputFile : '/assets/twiddle-deps.js'
226
+ } ) ;
280
227
281
- // Location should be 'none' in router.js
282
- fileMap [ 'router' ] = fileMap [ 'router' ] . replace ( / c o n f i g \. l o c a t i o n T y p e / , "'none'" ) ;
283
-
284
- fileMap [ 'resolver' ] = fs . readFileSync ( 'app/resolver.js' ) . toString ( ) ;
285
- fileMap [ 'twiddle.json' ] = fs . readFileSync ( 'blueprints/twiddle.json' ) . toString ( ) ;
286
- fileMap [ 'initializers/router' ] = fs . readFileSync ( 'blueprints/router_initializer.js' ) . toString ( ) ;
287
- fileMap [ 'initializers/mouse-events' ] = fs . readFileSync ( 'blueprints/mouse_events_initializer.js' ) . toString ( ) ;
288
- fileMap [ 'controllers/application' ] = fs . readFileSync ( 'blueprints/application_controller.js' ) . toString ( ) ;
289
- fileMap [ 'templates/application' ] = fs . readFileSync ( 'blueprints/application_template.hbs' ) . toString ( ) ;
290
- fileMap [ 'app.css' ] = fs . readFileSync ( 'blueprints/app.css' ) . toString ( ) ;
291
- fileMap [ 'index.html' ] = fs . readFileSync ( 'blueprints/index.html' ) . toString ( ) ;
292
- fileMap [ 'test-start-app' ] = fs . readFileSync ( 'blueprints/start-app.js' ) . toString ( ) ;
293
- fileMap [ 'model' ] = fs . readFileSync ( 'blueprints/model.js' ) . toString ( ) ;
294
-
295
- return 'export default ' + JSON . stringify ( fileMap ) ;
228
+ return twiddleVendorTree ;
296
229
}
0 commit comments