@@ -4,13 +4,12 @@ module.exports = function(defaults) {
44
55 const EmberApp = require ( 'ember-cli/lib/broccoli/ember-app' ) ;
66 const funnel = require ( 'broccoli-funnel' ) ;
7- const concat = require ( 'broccoli-concat' ) ;
87 const mergeTrees = require ( 'broccoli-merge-trees' ) ;
98 const babelTranspiler = require ( 'broccoli-babel-transpiler' ) ;
10- const Rollup = require ( 'broccoli-rollup' ) ;
119 const browserify = require ( 'browserify' ) ;
1210 const path = require ( 'path' ) ;
1311 const fs = require ( 'fs' ) ;
12+ const babelOpts = require ( './lib/babel-opts' ) ;
1413
1514 const env = EmberApp . env ( ) ;
1615 const deployTarget = process . env . DEPLOY_TARGET ;
@@ -27,7 +26,7 @@ module.exports = function(defaults) {
2726 }
2827 }
2928
30- const blueprintsCode = getEmberCLIBlueprints ( ) ;
29+ const blueprintsCode = require ( './lib/get-ember-cli-blueprints' ) ( ) ;
3130
3231 let app = new EmberApp ( defaults , {
3332 SRI : {
@@ -129,41 +128,40 @@ module.exports = function(defaults) {
129128 } ) ;
130129 testLoaderTree = babelTranspiler ( testLoaderTree , babelOpts ( ) ) ;
131130
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 ) ;
144132
145- let transpiledResolverTree = babelTranspiler ( baseResolverTree , babelOpts ( ) ) ;
133+ let twiddleVendorTree = buildTwiddleVendorTree ( ) ;
146134
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+ } ;
150137
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' ) ;
152146
153147 let preprocessJs = app . registry . registry . js [ 0 ] . toTree ;
148+
154149 let buildPreprocessedAddon = function ( addonName ) {
155150 return preprocessJs ( path . dirname ( require . resolve ( addonName ) ) + '/addon-test-support' , {
156151 registry : app . registry
157152 } ) ;
158153 } ;
154+
159155 let qunitTree = buildPreprocessedAddon ( 'ember-qunit' ) ;
160156 let testHelpersTreeForQUnit = buildPreprocessedAddon ( '@ember/test-helpers' ) ;
157+
161158 let testLoaderTreeForQUnit = funnel ( "node_modules/ember-cli-test-loader/addon-test-support" , {
162159 files : [ 'index.js' ] ,
163160 getDestinationPath : function ( ) {
164161 return "ember-cli-test-loader/test-support/index.js" ;
165162 }
166163 } ) ;
164+
167165 testLoaderTreeForQUnit = new Rollup ( testLoaderTreeForQUnit , {
168166 rollup : {
169167 input : 'ember-cli-test-loader/test-support/index.js' ,
@@ -176,121 +174,56 @@ module.exports = function(defaults) {
176174 ]
177175 }
178176 } ) ;
177+
179178 testLoaderTreeForQUnit = babelTranspiler ( testLoaderTreeForQUnit , babelOpts ( ) ) ;
179+
180180 let finalQUnitTree = concat ( mergeTrees ( [ qunitTree , testHelpersTreeForQUnit , testLoaderTreeForQUnit ] ) , {
181181 inputFiles : [ '**/*.js' ] ,
182182 outputFile : '/assets/ember-qunit.js'
183183 } ) ;
184184
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+ }
199187
200- function buildAddonTree ( addonName ) {
188+ function buildTwiddleVendorTree ( ) {
201189 const funnel = require ( 'broccoli-funnel' ) ;
202190 const concat = require ( 'broccoli-concat' ) ;
191+ const mergeTrees = require ( 'broccoli-merge-trees' ) ;
203192 const babelTranspiler = require ( 'broccoli-babel-transpiler' ) ;
204- const path = require ( 'path ' ) ;
193+ const babelOpts = require ( './lib/babel-opts ' ) ;
205194
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' ]
209197 } ) ;
210198
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+ } ) ;
212203
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'
216206 } ) ;
217- }
218207
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 ( ) ) ;
232209
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+ } ) ;
271213
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+ } ) ;
280227
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 ;
296229}
0 commit comments