|
| 1 | +var Funnel = require('broccoli-funnel'); |
| 2 | +var mergeTrees = require('broccoli-merge-trees'); |
| 3 | +var stew = require('broccoli-stew'); |
| 4 | +var TraceurCompiler = require('./tools/broccoli/traceur'); |
| 5 | +var renderLodashTemplate = require('broccoli-lodash'); |
| 6 | + |
| 7 | +var modulesTree = new Funnel('modules', {include: ['**/**'], exclude: ['angular2/src/core/zone/vm_turn_zone.es6']}); |
| 8 | + |
| 9 | +// Use Traceur to transpile original sources to ES6 |
| 10 | +var cjsTree = new TraceurCompiler(modulesTree, '.js', { |
| 11 | + sourceMaps: true, |
| 12 | + annotations: true, // parse annotations |
| 13 | + types: true, // parse types |
| 14 | + script: false, // parse as a module |
| 15 | + memberVariables: true, // parse class fields |
| 16 | + typeAssertionModule: 'rtts_assert/rtts_assert', |
| 17 | + // Don't use type assertions since this is partly transpiled by typescript |
| 18 | + typeAssertions: false, |
| 19 | + modules: 'commonjs' |
| 20 | +}, true); |
| 21 | + |
| 22 | +// Munge the filenames since we use an '.es6' extension |
| 23 | +cjsTree = stew.rename(cjsTree, function(relativePath) { |
| 24 | + return relativePath.replace(/\.(js|es6)\.map$/, '.map').replace(/\.es6$/, '.js'); |
| 25 | +}); |
| 26 | + |
| 27 | +// Now we add a few more files to the es6 tree that Traceur should not see |
| 28 | +['angular2', 'benchmarks', 'benchmarks_external', 'benchpress', 'examples', 'rtts_assert'].forEach( |
| 29 | + function(destDir) { |
| 30 | + var extras = new Funnel('.', {files: ['LICENSE'], destDir: destDir}); |
| 31 | + cjsTree = mergeTrees([cjsTree, extras]); |
| 32 | + }); |
| 33 | + |
| 34 | +extras = new Funnel(modulesTree, {include: ['**/*.md', '**/*.png'], exclude: ['**/*.dart.md']}); |
| 35 | +extras = stew.rename(extras, 'README.js.md', 'README.md'); |
| 36 | + |
| 37 | +var BASE_PACKAGE_JSON = require('./package.json'); |
| 38 | +var COMMON_PACKAGE_JSON = { |
| 39 | + version: BASE_PACKAGE_JSON.version, |
| 40 | + homepage: BASE_PACKAGE_JSON.homepage, |
| 41 | + bugs: BASE_PACKAGE_JSON.bugs, |
| 42 | + license: BASE_PACKAGE_JSON.license, |
| 43 | + contributors: BASE_PACKAGE_JSON.contributors, |
| 44 | + dependencies: BASE_PACKAGE_JSON.dependencies, |
| 45 | + devDependencies: { |
| 46 | + "yargs": BASE_PACKAGE_JSON.devDependencies['yargs'], |
| 47 | + "gulp-sourcemaps": BASE_PACKAGE_JSON.devDependencies['gulp-sourcemaps'], |
| 48 | + "gulp-traceur": BASE_PACKAGE_JSON.devDependencies['gulp-traceur'], |
| 49 | + "gulp": BASE_PACKAGE_JSON.devDependencies['gulp'], |
| 50 | + "gulp-rename": BASE_PACKAGE_JSON.devDependencies['gulp-rename'], |
| 51 | + "through2": BASE_PACKAGE_JSON.devDependencies['through2'] |
| 52 | + } |
| 53 | +}; |
| 54 | + |
| 55 | +// Add a .template extension since renderLodashTemplate strips one extension |
| 56 | +var packageJsons = stew.rename(new Funnel(modulesTree, {include: ['**/package.json']}), '.json', '.json.template'); |
| 57 | +packageJsons = renderLodashTemplate(packageJsons, { |
| 58 | + files: ["**/**"], |
| 59 | + context: { 'packageJson': COMMON_PACKAGE_JSON } |
| 60 | +}); |
| 61 | + |
| 62 | +cjsTree = mergeTrees([cjsTree, extras, packageJsons]); |
| 63 | + |
| 64 | +module.exports = stew.mv(cjsTree, 'js/cjs'); |
0 commit comments