Skip to content

Commit 3f95625

Browse files
committed
feat(gen:app): remove bower, initial webpack support
1 parent d6447d1 commit 3f95625

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

62 files changed

+1673
-790
lines changed

Diff for: gulpfile.js

+4-10
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ const transpile = lazypipe()
3535
.pipe(babel);
3636

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

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

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

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

145142
gulp.task('installFixtures', function() {
146-
gutil.log('installing npm & bower dependencies for generated app');
143+
gutil.log('installing npm dependencies for generated app');
147144
let progress = setInterval(() => {
148145
process.stdout.write('.');
149146
}, 1 * 1000);
150147
shell.cd('test/fixtures');
151148

152-
return Promise.all([
153-
execAsync('npm install --quiet', {cwd: '../fixtures'}),
154-
execAsync('bower install', {cwd: '../fixtures'})
155-
]).then(() => {
149+
execAsync('npm install --quiet', {cwd: '../fixtures'}).then(() => {
156150
process.stdout.write('\n');
157151
if(!process.env.SAUCE_USERNAME) {
158152
gutil.log('running npm run-script update-webdriver');

Diff for: package.json

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "generator-angular-fullstack",
3-
"version": "3.7.5",
3+
"version": "4.0.0-beta",
44
"description": "Yeoman generator for creating MEAN stack applications, using MongoDB, Express, AngularJS, and Node",
55
"keywords": [
66
"yeoman-generator",
@@ -45,6 +45,7 @@
4545
"gulp-babel": "^6.1.2",
4646
"gulp-beautify": "^2.0.0",
4747
"gulp-filter": "^4.0.0",
48+
"gulp-tap": "^0.1.3",
4849
"insight": "~0.8.1",
4950
"lodash": "^4.13.1",
5051
"semver": "^5.1.0",

Diff for: src/generators/app/index.js

+41-1
Original file line numberDiff line numberDiff line change
@@ -11,13 +11,17 @@ import insight from '../insight-init';
1111
import {exec} from 'child_process';
1212
import babelStream from 'gulp-babel';
1313
import beaufityStream from 'gulp-beautify';
14+
import tap from 'gulp-tap';
1415
import filter from 'gulp-filter';
1516
import semver from 'semver';
1617

1718
export class Generator extends Base {
1819
constructor(...args) {
1920
super(...args);
2021

22+
this.env.alias('angular-fullstack', 'afs');
23+
this.env.alias('afs', 'angular-fullstack');
24+
2125
this.argument('name', { type: String, required: false });
2226

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

462-
const jsFilter = filter(['client/**/*.js'], {restore: true});
466+
let jsFilter = filter(['client/**/*.js'], {restore: true});
463467
this.registerTransformStream([
464468
jsFilter,
465469
babelStream({
@@ -493,6 +497,42 @@ export class Generator extends Base {
493497
jsFilter.restore
494498
]);
495499

500+
/**
501+
* TypeScript doesn't play nicely with things that don't have a default export
502+
*/
503+
if(this.filters.ts) {
504+
const modulesToFix = [
505+
['angular', 'angular'],
506+
['ngCookies', 'angular-cookies'],
507+
['ngResource', 'angular-resource'],
508+
['ngSanitize', 'angular-sanitize'],
509+
['uiRouter', 'angular-ui-router'],
510+
['uiBootstrap', 'angular-ui-bootstrap'],
511+
['ngMessages', 'angular-messages'],
512+
['io', 'socket.io-client']
513+
];
514+
function replacer(contents) {
515+
modulesToFix.forEach(([moduleName, importName]) => {
516+
contents = contents.replace(
517+
`import ${moduleName} from '${importName}'`,
518+
`const ${moduleName} = require('${importName}')`
519+
);
520+
});
521+
return contents;
522+
}
523+
524+
let tsFilter = filter(['client/**/*.ts'], {restore: true});
525+
this.registerTransformStream([
526+
tsFilter,
527+
tap(function(file, t) {
528+
var contents = file.contents.toString();
529+
contents = replacer(contents);
530+
file.contents = new Buffer(contents);
531+
}),
532+
tsFilter.restore
533+
]);
534+
}
535+
496536
let self = this;
497537
this.sourceRoot(path.join(__dirname, '../../templates/app'));
498538
this.processDirectory('.', '.');

Diff for: templates/app/.bowerrc

-3
This file was deleted.

Diff for: templates/app/_bower.json

-25
This file was deleted.

Diff for: templates/app/_package.json

+71-21
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,24 @@
33
"version": "0.0.0",
44
"main": "server/app.js",
55
"dependencies": {
6+
<%_ /* CLIENT */ _%>
7+
"angular": "~1.5.5",<% if(filters.bootstrap) { if(filters.sass) { %>
8+
"bootstrap-sass": "~3.1.1",<% } %>
9+
"bootstrap": "~3.1.1",<% if(filters.oauth) { %>
10+
"bootstrap-social": "~4.9.1",<% }} %>
11+
"angular-animate": "~1.5.5",
12+
"angular-aria": "~1.5.5",
13+
"angular-resource": "~1.5.5",
14+
"angular-cookies": "~1.5.5",
15+
"angular-sanitize": "~1.5.5",<% if(filters.ngroute) { %>
16+
"angular-route": "~1.5.5",<% } if(filters.uibootstrap) { %>
17+
"angular-ui-bootstrap": "~1.1.2",<% } %>
18+
"font-awesome": ">=4.1.0"<% if(filters.socketio) { %>,
19+
"angular-socket-io": "~0.7.0"<% } if(filters.uirouter) { %>,
20+
"angular-ui-router": "~0.2.15"<% } if(filters.auth) { %>,
21+
"angular-validation-match": "~1.5.2",<% } %>
22+
<%_ /* END CLIENT */ _%>
23+
"core-js": "^2.2.1",
624
"express": "^4.13.3",
725
"morgan": "~1.7.0",
826
"body-parser": "^1.13.3",
@@ -15,28 +33,32 @@
1533
"lodash": "^4.6.1",
1634
"lusca": "^1.3.0",
1735
"babel-runtime": "^6.6.1",
18-
"babel-polyfill": "^6.7.2",<% if (filters.jade) { %>
19-
"jade": "^1.11.0",<% } %><% if (filters.html) { %>
20-
"ejs": "^2.3.3",<% } %><% if (filters.mongoose) { %>
36+
"babel-polyfill": "^6.7.2",<% if(filters.jade) { %>
37+
"jade": "^1.11.0",<% } %><% if(filters.html) { %>
38+
"ejs": "^2.3.3",<% } %><% if(filters.mongoose) { %>
2139
"mongoose": "^4.1.2",
2240
"bluebird": "^3.3.3",
23-
"connect-mongo": "^1.1.0",<% } %><% if (filters.sequelize) { %>
41+
"connect-mongo": "^1.1.0",<% } %><% if(filters.sequelize) { %>
2442
"sequelize": "^3.5.1",
2543
"sqlite3": "~3.1.1",
26-
"express-sequelize-session": "0.4.0",<% } %><% if (filters.auth) { %>
44+
"express-sequelize-session": "0.4.0",<% } %><% if(filters.auth) { %>
2745
"jsonwebtoken": "^7.0.0",
2846
"express-jwt": "^3.0.0",
2947
"passport": "~0.3.0",
30-
"passport-local": "^1.0.0",<% } %><% if (filters.facebookAuth) { %>
31-
"passport-facebook": "^2.0.0",<% } %><% if (filters.twitterAuth) { %>
32-
"passport-twitter": "^1.0.3",<% } %><% if (filters.googleAuth) { %>
33-
"passport-google-oauth20": "^1.0.0",<% } %><% if (filters.socketio) { %>
48+
"passport-local": "^1.0.0",<% } %><% if(filters.facebookAuth) { %>
49+
"passport-facebook": "^2.0.0",<% } %><% if(filters.twitterAuth) { %>
50+
"passport-twitter": "^1.0.3",<% } %><% if(filters.googleAuth) { %>
51+
"passport-google-oauth20": "^1.0.0",<% } %><% if(filters.socketio) { %>
3452
"socket.io": "^1.3.5",
3553
"socket.io-client": "^1.3.5",
3654
"socketio-jwt": "^4.2.0",<% } %>
37-
"serve-favicon": "^2.3.0"
55+
"serve-favicon": "^2.3.0",
56+
"sprint-js": "~0.1.0"
3857
},
3958
"devDependencies": {
59+
<%_ /* CLIENT */ _%>
60+
"angular-mocks": "~1.5.5",
61+
<%_ /* END CLIENT */ _%>
4062
"autoprefixer": "^6.0.0",
4163
"babel-core": "^6.6.5",
4264
"babel-register": "^6.6.5",
@@ -51,7 +73,8 @@
5173
"gulp-babel": "^6.1.2",<% if(filters.ts) { %>
5274
"gulp-typescript": "~2.13.0",
5375
"gulp-typings": "^1.3.6",
54-
"gulp-tslint": "^5.0.0",<% } %>
76+
"gulp-tslint": "^5.0.0",
77+
"ts-helpers": "1.1.1",<% } %>
5578
"gulp-cache": "^0.4.2",
5679
"gulp-concat": "^2.6.0",
5780
"gulp-env": "^0.4.0",
@@ -108,8 +131,8 @@
108131
"grunt-contrib-imagemin": "^1.0.0",
109132
"grunt-contrib-jshint": "^1.0.0",
110133
"grunt-contrib-uglify": "^1.0.0",
111-
"grunt-contrib-watch": "^1.0.0",<% if (filters.jade) { %>
112-
"grunt-contrib-jade": "^1.0.0",<% } %><% if (filters.less) { %>
134+
"grunt-contrib-watch": "^1.0.0",<% if(filters.jade) { %>
135+
"grunt-contrib-jade": "^1.0.0",<% } %><% if(filters.less) { %>
113136
"grunt-contrib-less": "^1.2.0",<% } %>
114137
"grunt-babel": "~6.0.0",<% if(filters.ts) { %>
115138
"grunt-ts": "^5.3.2",
@@ -140,6 +163,36 @@
140163
"time-grunt": "^1.2.1",
141164
"grunt-mocha-test": "~0.12.7",
142165
"grunt-mocha-istanbul": "^4.0.2",<% } /*end grunt*/ %>
166+
<%_ /* WEBPACK */ _%>
167+
"webpack": "^1.12.14",
168+
"webpack-dev-middleware": "^1.5.1",
169+
"webpack-dev-server": "~1.14.0",
170+
"webpack-stream": "^3.2.0",
171+
"extract-text-webpack-plugin": "^1.0.1",
172+
"html-webpack-plugin": "^2.16.0",
173+
"awesome-typescript-loader": "0.17.0",
174+
"ng-annotate-loader": "~0.1.0",
175+
"babel-loader": "^6.2.4",
176+
"css-loader": "^0.23.1",
177+
"file-loader": "^0.8.4",
178+
"imports-loader": "^0.6.5",
179+
"isparta-instrumenter-loader": "^1.0.0",
180+
"isparta-loader": "^2.0.0",
181+
"istanbul-instrumenter-loader": "^0.2.0",
182+
"null-loader": "^0.1.1",
183+
"postcss-loader": "^0.9.1",
184+
"raw-loader": "^0.5.1",
185+
"style-loader": "^0.13.0",
186+
<%_ if(filters.sass) { _%>
187+
"sass-loader": "^3.1.1",<% } %>
188+
<%_ if(filters.less) { _%>
189+
"less-loader": "",<% } %>
190+
<%_ if(filters.stylus) { _%>
191+
"stylus-loader": "",<% } %>
192+
"tiny-lr": "^0.2.1",
193+
"karma-webpack": "^1.7.0",
194+
<%_ /* END WEBPACK */ _%>
195+
"through2": "^2.0.1",
143196
"open": "~0.0.4",
144197
"jshint-stylish": "^2.2.0",
145198
"connect-livereload": "^0.5.3",
@@ -151,20 +204,17 @@
151204
"karma": "~0.13.3",
152205
"karma-firefox-launcher": "^1.0.0",
153206
"karma-script-launcher": "^1.0.0",
207+
"karma-coverage": "^0.5.3",
154208
"karma-chrome-launcher": "^1.0.1",
155-
"karma-jade-preprocessor": "0.0.11",
156-
"karma-phantomjs-launcher": "~1.0.0",<% if (filters.jade) { %>
157-
"karma-ng-jade2js-preprocessor": "^0.2.0",<% } %>
158-
"karma-ng-html2js-preprocessor": "^1.0.0",
209+
"karma-phantomjs-launcher": "~1.0.0",
159210
"karma-spec-reporter": "~0.0.20",
160211
"sinon-chai": "^2.8.0",
161-
"mocha": "^2.2.5",<% if (filters.mocha) { %>
212+
"mocha": "^2.2.5",<% if(filters.mocha) { %>
162213
"karma-mocha": "^1.0.1",
163-
"karma-chai-plugins": "~0.7.0",<% } if (filters.jasmine) { %>
214+
"karma-chai-plugins": "~0.7.0",<% } if(filters.jasmine) { %>
164215
"jasmine-core": "^2.3.4",
165216
"karma-jasmine": "^1.0.2",
166-
"jasmine-spec-reporter": "^2.4.0",<% } if(filters.babel) { %>
167-
"karma-babel-preprocessor": "^6.0.1",<% } %>
217+
"jasmine-spec-reporter": "^2.4.0",<% } %>
168218
"phantomjs-prebuilt": "^2.1.4",
169219
"proxyquire": "^1.0.1",
170220
"supertest": "^1.1.0"<% if(filters.ts) { %>,

0 commit comments

Comments
 (0)