Skip to content

Commit

Permalink
Merge pull request #16482 from rwjblue/streamlined-build-refactor
Browse files Browse the repository at this point in the history
Refactor the build!
  • Loading branch information
rwjblue authored Apr 11, 2018
2 parents 2c1f9bf + 6753274 commit 8b24b9c
Show file tree
Hide file tree
Showing 7 changed files with 209 additions and 675 deletions.
28 changes: 15 additions & 13 deletions bin/run-tests.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,15 +6,14 @@ var execa = require('execa');
var RSVP = require('rsvp');
var execFile = require('child_process').execFile;
var chalk = require('chalk');
var FEATURES = require('../broccoli/features');
var getPackages = require('../lib/packages');
var runInSequence = require('../lib/run-in-sequence');
var path = require('path');

var finalhandler = require('finalhandler');
var http = require('http');
var serveStatic = require('serve-static');
var puppeteer = require('puppeteer');
const fs = require('fs');

// Serve up public/ftp folder.
var serve = serveStatic('./dist/', { index: ['index.html', 'index.htm'] });
Expand Down Expand Up @@ -198,28 +197,31 @@ function runInBrowser(url, retries, resolve, reject) {
var testFunctions = [];

function generateEachPackageTests() {
var features = FEATURES;
var packages = getPackages(features);
let entries = fs.readdirSync('packages');
entries.forEach(entry => {
let relativePath = path.join('packages', entry);

Object.keys(packages).forEach(function(packageName) {
if (packages[packageName].skipTests) {
if (!fs.existsSync(path.join(relativePath, 'tests'))) {
return;
}

testFunctions.push(function() {
return run('package=' + packageName);
return run('package=' + entry);
});
testFunctions.push(function() {
return run('package=' + packageName + '&dist=es');
return run('package=' + entry + '&dist=es');
});
if (packages[packageName].requiresJQuery === false) {
testFunctions.push(function() {
return run('package=' + entry + '&enableoptionalfeatures=true');
});

// TODO: this should ultimately be deleted (when all packages can run with and
// without jQuery)
if (entry !== 'ember') {
testFunctions.push(function() {
return run('package=' + packageName + '&jquery=none');
return run('package=' + entry + '&jquery=none');
});
}
testFunctions.push(function() {
return run('package=' + packageName + '&enableoptionalfeatures=true');
});
});
}

Expand Down
124 changes: 10 additions & 114 deletions broccoli/packages.js
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@ const { RELEASE, DEBUG, toConst } = require('./features');
const GlimmerTemplatePrecompiler = require('./glimmer-template-compiler');
const VERSION_PLACEHOLDER = /VERSION_STRING_PLACEHOLDER/g;
const { stripIndent } = require('common-tags');
const toES5 = require('./to-es5');

const debugTree = BroccoliDebug.buildDebugCallback('ember-source');

Expand Down Expand Up @@ -61,22 +60,23 @@ module.exports.qunit = function _qunit() {
});
};

module.exports.emberTypescriptPkgES = function emberTypescriptPkg(name) {
let input = new Funnel(`packages/${name}`, {
destDir: `packages/${name}`,
module.exports.getPackagesES = function getPackagesES() {
let input = new Funnel(`packages`, {
exclude: ['node-module/**', 'loader/**', 'external-helpers/**'],
destDir: `packages`,
});

let debuggedInput = debugTree(input, `${name}:input`);
let debuggedInput = debugTree(input, `get-packages-es:input`);

let compiledTemplatesAndTypescript = new GlimmerTemplatePrecompiler(debuggedInput, {
persist: true,
glimmer: require('@glimmer/compiler'),
annotation: `${name} templates -> es`,
annotation: `get-packages-es templates -> es`,
});

let debuggedCompiledTemplatesAndTypeScript = debugTree(
compiledTemplatesAndTypescript,
`${name}:templates-output`
`get-packages-es:templates-output`
);

let nonTypeScriptContents = new Funnel(debuggedCompiledTemplatesAndTypeScript, {
Expand All @@ -88,51 +88,15 @@ module.exports.emberTypescriptPkgES = function emberTypescriptPkg(name) {
include: ['**/*.ts'],
});

let typescriptCompiled = typescript(debugTree(typescriptContents, `${name}:ts:input`));
let typescriptCompiled = typescript(debugTree(typescriptContents, `get-packages-es:ts:input`));

let debuggedCompiledTypescript = debugTree(typescriptCompiled, `${name}:ts:output`);
let debuggedCompiledTypescript = debugTree(typescriptCompiled, `get-packages-es:ts:output`);

let mergedFinalOutput = new MergeTrees([nonTypeScriptContents, debuggedCompiledTypescript], {
overwrite: true,
});

return debugTree(mergedFinalOutput, `${name}:output`);
};

module.exports.rollupEmberGlimmerES = function(emberGlimmerES) {
return new Rollup(emberGlimmerES, {
annotation: 'ember-glimmer',
rollup: {
external: [
'@glimmer/reference',
'@glimmer/runtime',
'@glimmer/node',
'@glimmer/opcode-compiler',
'@glimmer/program',
'@glimmer/wire-format',
'@glimmer/util',
'ember-console',
'ember-debug',
'ember-env-flags',
'ember/features',
'ember-environment',
'ember-utils',
'ember-metal',
'ember-runtime',
'ember-views',
'ember-routing',
'node-module',
'rsvp',
'container',
],
input: 'ember-glimmer/index.js',
output: {
file: 'ember-glimmer.js',
format: 'es',
exports: 'named',
},
},
});
return debugTree(mergedFinalOutput, `get-packages-es:output`);
};

module.exports.handlebarsES = function _handlebars() {
Expand Down Expand Up @@ -234,29 +198,6 @@ module.exports.simpleHTMLTokenizerES = function _simpleHTMLTokenizerES() {
});
};

module.exports.emberPkgES = function _emberPkgES(name, rollup, externs) {
if (rollup) {
return new Rollup(`packages/${name}`, {
annotation: `rollup ${name}`,
rollup: {
input: 'index.js',
external: externs,
output: {
file: `${name}.js`,
format: 'es',
exports: 'named',
},
},
});
}

return new Funnel(`packages/${name}`, {
exclude: ['.gitkeep', '**/*.d.ts', 'tests'],
destDir: name,
annotation: `${name} es`,
});
};

const glimmerTrees = new Map();

function rollupGlimmerPackage(pkg) {
Expand All @@ -279,10 +220,6 @@ function rollupGlimmerPackage(pkg) {
return tree;
}

module.exports.glimmerPkgES = function glimmerPkgES(name) {
return rollupGlimmerPackage(findPackage(name));
};

module.exports.glimmerTrees = function glimmerTrees(entries) {
let seen = new Set();

Expand Down Expand Up @@ -317,14 +254,6 @@ module.exports.glimmerTrees = function glimmerTrees(entries) {
return trees;
};

module.exports.emberTestsES = function _emberTestES(name) {
return new Funnel(`packages/${name}/tests`, {
exclude: ['.gitkeep'],
destDir: `${name}/tests`,
annotation: `${name} tests es`,
});
};

module.exports.nodeModuleUtils = function _nodeModuleUtils() {
return new Funnel('packages/node-module/lib', {
files: ['node-module.js'],
Expand Down Expand Up @@ -393,36 +322,3 @@ module.exports.nodeTests = function _nodeTests() {
include: ['**/*/*.js'],
});
};

module.exports.rollupEmberMetal = function _rollupEmberMetal(tree, options) {
options = Object.assign({ transformModules: false, annotation: 'ember metal' }, options);
let emberMetalES5 = toES5(tree, options);
return toES5(
new Rollup(emberMetalES5, {
annotation: `rollup ember-metal`,
rollup: {
input: `index.js`,
output: {
amd: { id: 'ember-metal' },
file: 'ember-metal.js',
format: 'amd',
exports: 'named',
},
external: [
'node-module',
'ember-babel',
'ember-debug',
'ember-environment',
'ember-utils',
'@glimmer/reference',
'require',
'backburner',
'ember-console',
'ember-env-flags',
'ember/features',
],
},
}),
{ transformDefine: true }
);
};
Loading

0 comments on commit 8b24b9c

Please sign in to comment.