Skip to content

Instantly share code, notes, and snippets.

@ransomw
Last active November 11, 2019 07:48
Show Gist options
  • Save ransomw/1876c11460713e5725e3 to your computer and use it in GitHub Desktop.
Save ransomw/1876c11460713e5725e3 to your computer and use it in GitHub Desktop.
ember_100115
var cli = require('ember-cli');
var exit = require('exit');
cli({
cliArgs: ['build'],
inputStream: process.stdin,
outputStream: process.stdout,
errorStream: process.stderr
}).then(function(result) {
var exitCode = typeof result === 'object' ? result.exitCode : result;
exit(exitCode);
});
/*jshint node:true*/
/* global require, module */
var path = require('path');
var _ = require('lodash');
var EmberApp = require('ember-cli/lib/broccoli/ember-app');
var Project = require('ember-cli/lib/models/project');
var UI = require('ember-cli/lib/ui');
var WatchedDir = require('broccoli-source').WatchedDir;
var UnwatchedDir = require('broccoli-source').UnwatchedDir;
var Registry = require('ember-cli-preprocess-registry');
var EMBER_PROJ_DIR = path.resolve('test-a');
var MyEmberApp = function (defaults, options) {
var registry = new Registry(
require('./package.json').dependencies,
this);
EmberApp.call(
this,
// deep merge of project by merge-defaults hits recursive loop
_.merge(defaults, {
project: options.project
}), _.merge({
// registry: registry
}, _.omit(options, ['project'])));
};
MyEmberApp.prototype = Object.create(EmberApp.prototype);
MyEmberApp.prototype.dependencies = (function () {
var app_package = require('./package.json');
return function () {
return app_package.dependencies;
};
}());
module.exports = function(defaults) {
var ui = new UI({
inputStream: process.stdin,
outputStream: process.stdout,
ci: false,
writeLevel: undefined // could be 'ERROR'
});
var project = new Project(
path.resolve(EMBER_PROJ_DIR), // project directory
require(path.join(EMBER_PROJ_DIR, 'package.json')), // pkg
ui,
defaults.project.cli // cli
);
project.configPath = function () {
return path.join(EMBER_PROJ_DIR, 'config', 'environment');
};
// Project.setupBowerDirectory undesired behavior: doesn't join paths
// path.join(path.dirname(bowerrcPath),
// JSON.parse(bowerrcContent).directory)
project.bowerDirectory = path.join(EMBER_PROJ_DIR, 'bower_components');
debugger;
var app = new MyEmberApp(defaults, {
project: project,
// name: EMBER_PROJ_DIR,
babel: {
compileModules: true, // no effect.. EmberApp._prunedBabelOptions
modules: 'amdStrict',
resolveModuleSource: require('amd-name-resolver'),
moduleIds: true
},
trees: {
app: new WatchedDir(path.join(EMBER_PROJ_DIR, 'app')),
tests: new WatchedDir(path.join(EMBER_PROJ_DIR, 'tests')),
styles: new UnwatchedDir(
path.join(EMBER_PROJ_DIR, 'app', 'styles')),
// bower: undefined, // app.bowerDirectory set by project
vendor: null,
public: null
}
});
return app.toTree();
};

initial attempts at programmatic ember-cli usage

test-a is a directory parallel to these files where ember init was run and bower.json was edited to include jquery at 1.11.3 exactly as ember throws an error on jquery 1.12.x.

the js generated by node build.js contains

require("undefined/app")["default"].create({});

suggesting that this setup leaves a variable needed by the ember-cli build system undefined.

{
"name": "ember-sand",
"version": "0.0.0",
"type": "app",
"dependencies": {
"ember-cli": "2.2.0-beta.3",
"ember-cli-htmlbars": "1.0.1",
"ember-cli-preprocess-registry": "1.1.0",
"ember-resolver": "2.0.3",
"ember-cli-htmlbars-inline-precompile": "0.3.1",
"amd-name-resolver": "0.0.2",
"exit": "0.1.2",
"lodash": "3.10.0"
},
"engines": {
"node": "5.3.0"
}
}
@kyrrr
Copy link

kyrrr commented Nov 11, 2019

Did you find a solution to this? I'm in legacy hell and can't figure this one out.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment