Skip to content

Commit

Permalink
BUILDS WORKING FOR EMBER 3.5
Browse files Browse the repository at this point in the history
  • Loading branch information
izelnakri committed Oct 17, 2018
1 parent 369253b commit a819806
Show file tree
Hide file tree
Showing 20 changed files with 24,564 additions and 19,344 deletions.
6 changes: 3 additions & 3 deletions cli.js
@@ -1,9 +1,9 @@
#! /usr/bin/env node
require = require('esm')(module);
require('babel-register')({
presets: ['env']
require('@babel/register')({
presets: ['@babel/preset-env']
});
require('babel-polyfill');
require('@babel/polyfill');

process.title = 'mber';
global.mainContext = global; // NOTE: needed for ember-template-compiler
Expand Down
1 change: 1 addition & 0 deletions ember-app-boilerplate/package.json
Expand Up @@ -25,6 +25,7 @@
"eslint-plugin-ember": "^5.2.0"
},
"dependencies": {
"babel-plugin-filter-imports": "^2.0.3",
"ember-cli-fastboot": "^1.1.4-beta.1",
"ember-data": "^3.3.0",
"ember-devtools": "^6.0.0",
Expand Down
4 changes: 2 additions & 2 deletions index.js
@@ -1,5 +1,5 @@
require('babel-register')({
presets: ['env']
require('@babel/register')({
presets: ['@babel/preset-env']
});

process.title = 'mber';
Expand Down
47 changes: 23 additions & 24 deletions lib/transpilers/convert-es-module-to-amd.js
@@ -1,23 +1,35 @@
import DebugToolsPlugin from 'babel-plugin-debug-macros';
import HTMLBarsInlinePrecompile from 'babel-plugin-htmlbars-inline-precompile';
import { resolveModules } from 'amd-name-resolver';
import { transformSync } from '@babel/core'; // TODO: move this to async:
import HTMLBarsInlinePrecompile from 'babel-plugin-htmlbars-inline-precompile';
import HTMLBarsCompiler from '../../vendor/ember-template-compiler';

// TODO: maybe do some plugins here injected from the parameters for speed optimization
export default function(codeString, { moduleName=null }) {
const resolver = resolveModules({ moduleRoot: moduleName.slice(0, moduleName.indexOf('/')) });

const { code } = transformSync(codeString.toString(), {
filename: moduleName,
presets: ['@babel/preset-env'], // TODO: check if this is slower than previous
moduleId: moduleName,
presets: [['@babel/preset-env', { loose: true, modules: false }]], // TODO: add browserlist here
plugins: [
["babel-plugin-module-resolver", {
resolvePath: (dependencyPath) => resolver(dependencyPath, moduleName) // NOTE: investigate if we can ditch amd-name-resolver
}],
[HTMLBarsInlinePrecompile, { precompile: HTMLBarsCompiler.precompile }],

// ['babel6-plugin-strip-heimdall'], // TODO: make this optional, only needed for ember-data
// getDebugMacroPlugins(),
['module:babel6-plugin-strip-heimdall'],
[DebugToolsPlugin, {
debugTools: {
isDebug: !(process.env.EMBER_ENV === 'production'),
source: '@ember/debug'
},
flags: [{
source: '@glimmer/env',
flags: { DEBUG: !(process.env.EMBER_ENV === 'production'), CI: false }
}],
externalizeHelpers: {
global: 'Ember'
}
}],
[
'ember-modules-api-polyfill',
{ blacklist: { '@ember/debug': ['assert', 'deprecate', 'warn', 'instrument']} }
Expand All @@ -26,26 +38,13 @@ export default function(codeString, { moduleName=null }) {
'@babel/plugin-transform-modules-amd',
{ noInterop: true, loose: true }
],
['filter-imports', {
imports: process.env.EMBER_ENV === 'production' ? {
'ember-data/-debug': ['instrument', 'assertPolymorphicType', 'default']
} : {}
}]
],
});

return code;
}

// function getDebugMacroPlugins() {
// const DebugMacros = require('babel-plugin-debug-macros').default;
// const options = {
// envFlags: {
// source: '@glimmer/env',
// flags: { DEBUG: !(process.env.EMBER_ENV === 'production'), CI: false }
// },
// externalizeHelpers: {
// global: 'Ember'
// },
// debugTools: {
// source: '@ember/debug'
// }
// };
//
// return [DebugMacros, options];
// }
4 changes: 2 additions & 2 deletions lib/transpilers/import-addon-folder-to-amd.js
Expand Up @@ -5,7 +5,7 @@ import convertHBSToAMD from './convert-hbs-to-amd';
import findProjectRoot from '../utils/find-project-root';
import lookup from '../utils/recursive-file-lookup';

export default function(moduleName, addonPath, projectRoot) {
export default function(moduleName, addonPath, projectRoot, options) {
return new Promise(async (resolve) => {
const PROJECT_ROOT = projectRoot || await findProjectRoot();
const packagePath = await getAddonPath(addonPath, PROJECT_ROOT);
Expand All @@ -16,7 +16,7 @@ export default function(moduleName, addonPath, projectRoot) {

let targetFiles = [];

lookup(packagePath, ['js', 'hbs']).then((files) => {
lookup(packagePath, ['js', 'hbs'], options).then((files) => {
targetFiles = files;

return Promise.all(files.map((fileName => fs.readFile(fileName))));
Expand Down
2 changes: 1 addition & 1 deletion lib/transpilers/transpile-npm-imports.js
Expand Up @@ -47,7 +47,7 @@ function bundleBrowserify(entrypoint, { moduleName, globalModuleName, transpile
let result = '';

return browserify(entrypoint, { standalone: `_${globalModuleName}` }).transform('babelify', { // TODO: handle / in moduleNames
presets: ['babel-preset-env']
presets: ['@babel/preset-env']
}).bundle().on('data', (chunk) => {
result += chunk;
}).on('end', () => {
Expand Down
23 changes: 15 additions & 8 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 3 additions & 1 deletion package.json
Expand Up @@ -24,7 +24,7 @@
},
"devDependencies": {
"@ember/test-helpers": "0.7.26",
"@glimmer/resolver": "^0.4.3",
"@glimmer/resolver": "^0.4.1",
"ava": "^1.0.0-rc.1",
"cors": "^2.8.4",
"ember-cli-fastboot": "^1.1.4-beta.1",
Expand Down Expand Up @@ -60,8 +60,10 @@
"amd-name-resolver": "^1.2.0",
"babel-plugin-debug-macros": "^0.2.0",
"babel-plugin-ember-modules-api-polyfill": "^2.5.0",
"babel-plugin-filter-imports": "^2.0.3",
"babel-plugin-htmlbars-inline-precompile": "^1.0.0",
"babel-plugin-module-resolver": "^3.1.1",
"babel6-plugin-strip-heimdall": "^6.0.1",
"babelify": "^10.0.0",
"browserify": "^16.2.3",
"chalk": "^2.4.1",
Expand Down
7 changes: 5 additions & 2 deletions scripts/build-ember-base.js
Expand Up @@ -49,7 +49,7 @@ function readBuildFiles(projectPath, environment, options={ excludeEmberData: fa

let baseBuilds = [
fs.readFile(`${MODULE_PATH}/loader.js/dist/loader/loader.js`),
importAddonFolderToAMD('@glimmer/resolver', '@glimmer/resolver/dist/commonjs/es2017'),
importAddonFolderToAMD('@glimmer/resolver', '@glimmer/resolver/dist/modules/es2017'),
fs.readFile(`${MODULE_PATH}/@glimmer/di/dist/amd/es5/glimmer-di.js`),
injectEmberJS(MODULE_PATH, environment),
new Promise((resolve) => resolve(`
Expand Down Expand Up @@ -81,11 +81,14 @@ function injectEmberJS(modulePath, environment) {

function buildEmberData(projectPath, environment) {
const emberDataVersion = require(`${projectPath}/package.json`).devDependencies['ember-data']; // NOTE: normally stripping -private but ember-data build sourcecode is a disaster
const options = environment === 'production' ? {
filter: (item) => !item.path.includes('/-debug')
} : {};

process.env.EMBER_ENV = environment === 'production' ? 'production' : undefined; // NOTE: hack for hacky ember-data builds

return [
importAddonFolderToAMD('ember-data', 'ember-data/addon'),
importAddonFolderToAMD('ember-data', 'ember-data/addon', null, options),
new Promise((resolve) => resolve(`
define('ember-data/version', ['exports'], function (exports) {
exports.default = '${emberDataVersion}';
Expand Down
2 changes: 1 addition & 1 deletion scripts/global-jquery.js
@@ -1,4 +1,4 @@
require('babel-polyfill');
require('@babel/polyfill');

const rollup = require('rollup');

Expand Down

0 comments on commit a819806

Please sign in to comment.