Last active
February 11, 2024 22:50
-
-
Save ppcano/d372bc19ec2b8714cbfd to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
for (i = 0; i < inputFiles.length; i++) { | |
if (fs.lstatSync(srcDir + '/' + inputFiles[i]).isFile()) { | |
addFile(inputFiles[i]) | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var mergeTrees = require('broccoli-merge-trees'), | |
es6Filter = require('broccoli-es6-module-transpiler'), | |
defeatureifyFilter = require('./broccoli/defeatureify'), | |
fs = require('fs'), | |
//replace = require('./broccoli/replace'), | |
wrapFiles = require('broccoli-wrap'), | |
match = require('./broccoli/match'), | |
precompiler = require('./broccoli/precompiler').Filter, | |
createPrecompilerModule = require('./broccoli/precompiler').CreatePrecompilerModule, | |
selfExecuting = require('./broccoli/self_executing'), | |
emberTemplateCompiler = require('./broccoli/ember_template_compiler'), | |
append = require('./broccoli/append'), | |
concatFilter = require('./broccoli/concat'), | |
concatFilter2 = require('broccoli-concat'), | |
pickFiles = require('broccoli-static-compiler'); | |
var runningTest = process.env.RUNNING_TEST === 'true'; | |
// This file creation is only done at the design process | |
// so live-reloading do not work | |
var compilerInput = 'app/submodules/ember.js/packages_es6/ember-handlebars-compiler/lib/main.js'; | |
var compilerOutput = 'tmp/ember-handlebars-compiler.js'; | |
emberTemplateCompiler(compilerInput, compilerOutput); | |
// setup precompiler | |
handlebarsPath = "app/vendor/handlebars-v1.3.0.js"; | |
precompiler.prototype.module = createPrecompilerModule(compilerOutput, handlebarsPath); | |
// pickFiles | |
var app = match('app', 'app/**/*.js'); | |
var emberData = match('app', 'submodules/data/packages/*/lib/**/*.js'); | |
var emberResolver = match('app', 'submodules/ember-jj-abrams-resolver/packages/*/lib/core.js'); | |
var emberAmdLibs = match('app', 'submodules/ember.js/packages_es6/*/lib/**/*.amd.js'); | |
var emberLibs = match('app', 'submodules/ember.js/packages/{rsvp,metamorph}/lib/main.js'); | |
var emberModules = match('app', 'submodules/ember.js/packages_es6/*/lib/**/!(*.amd).js');//https://github.com/isaacs/node-glob/issues/62 | |
var handlebarsRuntime = match('app', 'vendor/handlebars.runtime-v1.3.0.js'); | |
var jquery = match('app', 'vendor/jquery-1.9.1.js'); | |
var templates = match('app', 'templates/**/*.handlebars'); | |
//var emberMain = match('app', 'submodules/ember.js/packages/ember/lib/main.js'); | |
var emberMain = match('app', 'shims/ember.js'); | |
var es6Options = { moduleName: function(filePath) { | |
return filePath.replace('app/app', 'app') | |
.replace('app/submodules/ember.js/packages/','') | |
.replace('app/submodules/ember.js/packages_es6/','') | |
.replace('lib/','') | |
.replace(/.js$/, '') | |
.replace(/\/main$/, ''); | |
}}; | |
// templates | |
templates = precompiler(templates, {templateNameGenerator: function(filePath) { | |
return filePath.replace('app/templates/','') | |
.replace(/\.[^/.]+$/, ""); | |
}}); | |
//templates = concatFilter(templates, 'templates.js'); | |
templates = concatFilter2(templates, {inputFiles: ['**/*.handlebars'],outputFile:'/templates.js'}); | |
templates = append(templates, {before: true, content: "import Ember from \"ember-metal/core\";\n import \"ember\";"}); | |
templates = es6Filter(templates, {moduleName: 'app/templates'}); | |
// emberModules | |
emberModules = es6Filter(emberModules, es6Options); | |
//var features = match('.', 'ember_features.json'); // if a tree is passed, auto-rebuild whenever the file change | |
var defeatureifyOptions = JSON.parse(fs.readFileSync('ember_features.json', 'utf8')); | |
emberModules = defeatureifyFilter(emberModules, {options: defeatureifyOptions}); | |
emberModules = precompiler(emberModules); | |
// emberMain | |
//emberMain = es6Filter(emberMain, es6Options); | |
// handlebarsRuntime | |
handlebarsRuntime = append(handlebarsRuntime, {before: false, content: "\nwindow.Handlebars = Handlebars\n"}); | |
handlebarsRuntime = selfExecuting(handlebarsRuntime); | |
// app | |
app = es6Filter(app, es6Options); | |
// emberData | |
emberData = es6Filter(emberData, { moduleName: function(filePath) { | |
return filePath.replace('app/submodules/data/packages/','') | |
.replace(/.js$/, '') | |
}}); | |
// compose and build app.js | |
var trees = [app, emberData, emberResolver, emberAmdLibs, emberLibs, emberMain, emberModules, handlebarsRuntime, jquery, templates]; | |
// ember-qunit | |
if ( runningTest ) { | |
var emberQunit = match('app', 'submodules/ember-qunit/lib/**/*.js'); | |
emberQunit = es6Filter(emberQunit, { transpilerOptions: {compatFix: true}, | |
moduleName: function(filePath) { | |
return filePath.replace('app/submodules/', '') | |
.replace('lib/','') | |
.replace(/.js$/, ''); | |
//.replace(/\/main$/, ''); #issue: https://github.com/rpflorence/ember-qunit/issues/42 | |
} | |
}); | |
//var emberQunit = match('app', 'submodules/ember-qunit/dist/named-amd/*.js'); | |
//emberQunit = replace(emberQunit, { match: /\"ember-qunit\"/g, replacement: "\"ember-qunit\/main\"" } ); | |
trees.push(emberQunit); | |
var testsUtils = match('app', 'tests/lib/**/*.js'); | |
testsUtils = es6Filter(testsUtils, {moduleName: function(filePath) { | |
return filePath.replace('app/tests/', '') | |
.replace('lib/','') | |
.replace(/.js$/, '') | |
.replace(/\/main$/, ''); | |
}}); | |
trees.push(testsUtils); | |
var emberTests = match('app', 'tests/tests/**/*_test.js'); | |
//emberTests = concatFilter(emberTests, 'tests.js'); | |
emberTests = concatFilter2(emberTests, {inputFiles: ['**/*'], outputFile:'/tests.js'}); | |
} | |
trees = new mergeTrees(trees) | |
//trees = concatFilter(trees, 'app.js'); | |
trees = concatFilter2(trees, {inputFiles: ['**/*.js'],outputFile:'/app.js'}); | |
trees = selfExecuting(trees); | |
trees = append(trees, {before: true, path: "app/submodules/ember.js/packages/loader/lib/main.js"}); | |
var publicFiles; | |
if ( runningTest ) { | |
publicFiles = pickFiles('app', { | |
srcDir: '/tests/public', | |
destDir: '/' }); | |
trees = [publicFiles, trees, emberTests]; | |
} else { | |
publicFiles = pickFiles('broccoli_public', { | |
srcDir: '/', | |
destDir: '/' }); | |
trees = [publicFiles, trees] | |
} | |
trees = new mergeTrees(trees) | |
module.exports = trees; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment