Skip to content

feat(gen:app): remove bower, initial webpack support #1892

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 12 commits into from
14 changes: 4 additions & 10 deletions gulpfile.js
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ const transpile = lazypipe()
.pipe(babel);

gulp.task('clean', () => {
return del(['generators/**/*', './test/(**|!fixtures/node_modules|!fixtures/bower_components)/*']);
return del(['generators/**/*', './test/(**|!fixtures/node_modules)/*']);
});

gulp.task('babel', () => {
Expand Down Expand Up @@ -113,10 +113,7 @@ function updateFixtures(target) {
const dest = __dirname + (deps ? '/angular-fullstack-deps/' : '/test/fixtures/');
const appName = deps ? 'angular-fullstack-deps' : 'tempApp';

return Promise.all([
processJson('templates/app/_package.json', dest + 'package.json', {appName, genVer, private: !deps, test: test}),
processJson('templates/app/_bower.json', dest + 'bower.json', {appName, genVer, private: !deps, test: test})
]);
return processJson('templates/app/_package.json', dest + 'package.json', {appName, genVer, private: !deps, test: test});
}

gulp.task('updateFixtures', cb => {
Expand All @@ -143,16 +140,13 @@ function execAsync(cmd, opt) {
}

gulp.task('installFixtures', function() {
gutil.log('installing npm & bower dependencies for generated app');
gutil.log('installing npm dependencies for generated app');
let progress = setInterval(() => {
process.stdout.write('.');
}, 1 * 1000);
shell.cd('test/fixtures');

return Promise.all([
execAsync('npm install --quiet', {cwd: '../fixtures'}),
execAsync('bower install', {cwd: '../fixtures'})
]).then(() => {
execAsync('npm install --quiet', {cwd: '../fixtures'}).then(() => {
process.stdout.write('\n');
if(!process.env.SAUCE_USERNAME) {
gutil.log('running npm run-script update-webdriver');
Expand Down
3 changes: 2 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "generator-angular-fullstack",
"version": "3.7.5",
"version": "4.0.0-beta",
"description": "Yeoman generator for creating MEAN stack applications, using MongoDB, Express, AngularJS, and Node",
"keywords": [
"yeoman-generator",
Expand Down Expand Up @@ -45,6 +45,7 @@
"gulp-babel": "^6.1.2",
"gulp-beautify": "^2.0.0",
"gulp-filter": "^4.0.0",
"gulp-tap": "^0.1.3",
"insight": "~0.8.1",
"lodash": "^4.13.1",
"semver": "^5.1.0",
Expand Down
42 changes: 41 additions & 1 deletion src/generators/app/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,13 +11,17 @@ import insight from '../insight-init';
import {exec} from 'child_process';
import babelStream from 'gulp-babel';
import beaufityStream from 'gulp-beautify';
import tap from 'gulp-tap';
import filter from 'gulp-filter';
import semver from 'semver';

export class Generator extends Base {
constructor(...args) {
super(...args);

this.env.alias('angular-fullstack', 'afs');
this.env.alias('afs', 'angular-fullstack');

this.argument('name', { type: String, required: false });

this.option('skip-install', {
Expand Down Expand Up @@ -459,7 +463,7 @@ export class Generator extends Base {
babelPlugins.push('babel-plugin-transform-flow-strip-types');
// }

const jsFilter = filter(['client/**/*.js'], {restore: true});
let jsFilter = filter(['client/**/*.js'], {restore: true});
this.registerTransformStream([
jsFilter,
babelStream({
Expand Down Expand Up @@ -493,6 +497,42 @@ export class Generator extends Base {
jsFilter.restore
]);

/**
* TypeScript doesn't play nicely with things that don't have a default export
*/
if(this.filters.ts) {
const modulesToFix = [
['angular', 'angular'],
['ngCookies', 'angular-cookies'],
['ngResource', 'angular-resource'],
['ngSanitize', 'angular-sanitize'],
['uiRouter', 'angular-ui-router'],
['uiBootstrap', 'angular-ui-bootstrap'],
['ngMessages', 'angular-messages'],
['io', 'socket.io-client']
];
function replacer(contents) {
modulesToFix.forEach(([moduleName, importName]) => {
contents = contents.replace(
`import ${moduleName} from '${importName}'`,
`const ${moduleName} = require('${importName}')`
);
});
return contents;
}

let tsFilter = filter(['client/**/*.ts'], {restore: true});
this.registerTransformStream([
tsFilter,
tap(function(file, t) {
var contents = file.contents.toString();
contents = replacer(contents);
file.contents = new Buffer(contents);
}),
tsFilter.restore
]);
}

let self = this;
this.sourceRoot(path.join(__dirname, '../../templates/app'));
this.processDirectory('.', '.');
Expand Down
10 changes: 3 additions & 7 deletions src/test/endpoint.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -53,12 +53,8 @@ function runEndpointGen(name, opt={}) {
dir = _dir;

// symlink our dependency directories
return Promise.all([
fs.mkdirAsync(dir + '/client').then(() => {
return fs.symlinkAsync(__dirname + '/fixtures/bower_components', dir + '/client/bower_components');
}),
fs.symlinkAsync(__dirname + '/fixtures/node_modules', dir + '/node_modules')
]).then(done);
return fs.symlinkAsync(__dirname + '/fixtures/node_modules', dir + '/node_modules')
.then(done);
})
.withOptions(options)
.withArguments([name])
Expand Down Expand Up @@ -250,4 +246,4 @@ describe('angular-fullstack:endpoint', function() {
return jshintDir(dir, 'foo-bar').should.be.fulfilled();
});
});
});
});
3 changes: 0 additions & 3 deletions src/test/fixtures/.bowerrc

This file was deleted.

2 changes: 1 addition & 1 deletion src/test/fixtures/.yo-rc.json
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@
"models": true,
"mongooseModels": true,
"mongoose": true,
"grunt": true,
"gulp": true,
"mocha": true,
"jasmine": false,
"expect": true
Expand Down
40 changes: 24 additions & 16 deletions src/test/get-expected-files.js
Original file line number Diff line number Diff line change
Expand Up @@ -49,21 +49,22 @@ export function app(options) {
'client/.htaccess',
'client/favicon.ico',
'client/robots.txt',
'client/index.html',
'client/_index.html',
`client/polyfills.${script}`,
'client/app/app.' + script,
'client/app/app.config.' + script,
'client/app/app.' + stylesheet,
'client/app/main/main.' + script,
'client/app/main/main.component.' + script,
'client/app/main/main.component.spec.' + script,
'client/app/main/main.routes.' + script,
'client/app/main/main.' + markup,
'client/app/main/main.' + stylesheet,
'client/app/main/main.controller.' + script,
'client/app/main/main.controller.spec.' + script,
'client/assets/images/yeoman.png',
'client/components/footer/footer.' + stylesheet,
'client/components/footer/footer.' + markup,
'client/components/footer/footer.directive.' + script,
'client/components/footer/footer.component.' + script,
'client/components/navbar/navbar.' + markup,
'client/components/navbar/navbar.controller.' + script,
'client/components/navbar/navbar.directive.' + script,
'client/components/navbar/navbar.component.' + script,
'client/components/util/util.module.' + script,
'client/components/util/util.service.' + script,
'server/.jshintrc',
Expand All @@ -89,21 +90,25 @@ export function app(options) {
'e2e/main/main.spec.js',
'e2e/components/navbar/navbar.po.js',
'.babelrc',
'.bowerrc',
'.buildignore',
'.editorconfig',
'.gitattributes',
'.gitignore',
'.travis.yml',
'.jscsrc',
'.yo-rc.json',
'Gruntfile.js',
'gulpfile.babel.js',
'package.json',
'bower.json',
'karma.conf.js',
'mocha.conf.js',
'mocha.global.js',
'protractor.conf.js',
'README.md'
'README.md',
'spec.js',
'webpack.build.js',
'webpack.dev.js',
'webpack.test.js',
'webpack.make.js'
]);

/* TypeScript */
Expand Down Expand Up @@ -155,18 +160,22 @@ export function app(options) {
/* Authentication */
if (options.auth) {
files = files.concat([
'client/app/account/account.' + script,
'client/app/account/index.' + script,
'client/app/account/account.routes.' + script,
'client/app/account/login/login.' + markup,
'client/app/account/login/index.' + script,
'client/app/account/login/login.controller.' + script,
'client/app/account/settings/settings.' + markup,
'client/app/account/settings/index.' + script,
'client/app/account/settings/settings.controller.' + script,
'client/app/account/signup/signup.' + markup,
'client/app/account/signup/index.' + script,
'client/app/account/signup/signup.controller.' + script,
'client/app/admin/index.' + script,
'client/app/admin/admin.' + markup,
'client/app/admin/admin.' + stylesheet,
'client/app/admin/admin.module.' + script,
'client/app/admin/admin.router.' + script,
'client/app/admin/admin.controller.' + script,
'client/app/admin/admin.routes.' + script,
'client/components/auth/auth.module.' + script,
'client/components/auth/auth.service.' + script,
'client/components/auth/interceptor.service.' + script,
Expand Down Expand Up @@ -200,11 +209,10 @@ export function app(options) {


files = files.concat([
'client/components/oauth-buttons/index.' + script,
'client/components/oauth-buttons/oauth-buttons.' + stylesheet,
'client/components/oauth-buttons/oauth-buttons.' + markup,
'client/components/oauth-buttons/oauth-buttons.controller.' + script,
'client/components/oauth-buttons/oauth-buttons.controller.spec.' + script,
'client/components/oauth-buttons/oauth-buttons.directive.' + script,
'client/components/oauth-buttons/oauth-buttons.directive.spec.' + script,
'e2e/components/oauth-buttons/oauth-buttons.po.js'
]);
Expand Down
Loading