diff --git a/.babelrc b/.babelrc new file mode 100644 index 000000000..bde6914ee --- /dev/null +++ b/.babelrc @@ -0,0 +1,4 @@ +{ + "presets": ["es2015"], + "plugins": ["transform-class-properties"] +} \ No newline at end of file diff --git a/app/index.js b/app/index.js index 11dde883e..e4df68f08 100644 --- a/app/index.js +++ b/app/index.js @@ -1,9 +1,9 @@ 'use strict'; // Register the Babel require hook -require('babel-core/register')({ +require('babel-register')({ only: /generator-angular-fullstack\/(?!node_modules)/ }); // Export the generator -exports = module.exports = require('./generator'); +module.exports = require('./generator').default; diff --git a/app/templates/Gruntfile(grunt).js b/app/templates/Gruntfile(grunt).js index 320ae666e..d31c0ef86 100644 --- a/app/templates/Gruntfile(grunt).js +++ b/app/templates/Gruntfile(grunt).js @@ -619,10 +619,7 @@ module.exports = function (grunt) { // Compiles ES6 to JavaScript using Babel babel: { options: { - sourceMap: true, - optional: [ - 'es7.classProperties' - ] + sourceMap: true },<% if(filters.babel) { %> client: { files: [{ @@ -634,7 +631,10 @@ module.exports = function (grunt) { },<% } %> server: { options: { - optional: ['runtime'] + plugins: [ + 'transform-class-properties', + 'transform-runtime' + ] }, files: [{ expand: true, diff --git a/app/templates/_.babelrc b/app/templates/_.babelrc new file mode 100644 index 000000000..bde6914ee --- /dev/null +++ b/app/templates/_.babelrc @@ -0,0 +1,4 @@ +{ + "presets": ["es2015"], + "plugins": ["transform-class-properties"] +} \ No newline at end of file diff --git a/app/templates/_package.json b/app/templates/_package.json index 03d3b1b8f..a3a9bd05c 100644 --- a/app/templates/_package.json +++ b/app/templates/_package.json @@ -14,7 +14,8 @@ "composable-middleware": "^0.3.0", "lodash": "^3.10.1", "lusca": "^1.3.0", - "babel-runtime": "^5.8.20",<% if (filters.jade) { %> + "babel-runtime": "^6.6.1", + "babel-polyfill": "^6.7.2",<% if (filters.jade) { %> "jade": "^1.11.0",<% } %><% if (filters.html) { %> "ejs": "^2.3.3",<% } %><% if (filters.mongoose) { %> "mongoose": "^4.1.2", @@ -37,13 +38,17 @@ }, "devDependencies": { "autoprefixer": "^6.0.0", - "babel-core": "^5.6.4",<% if(filters.gulp) { %> + "babel-core": "^6.6.5", + "babel-register": "^6.6.5", + "babel-plugin-transform-class-properties": "^6.6.0", + "babel-plugin-transform-runtime": "^6.6.0", + "babel-preset-es2015": "^6.6.0",<% if(filters.gulp) { %> "del": "^2.0.2", - "gulp": "^3.9.0", + "gulp": "^3.9.1", "gulp-add-src": "^0.2.0", "gulp-angular-templatecache": "^1.7.0", "gulp-autoprefixer": "2.3.1", - "gulp-babel": "^5.1.0",<% if(filters.ts) { %> + "gulp-babel": "^6.1.2",<% if(filters.ts) { %> "gulp-typescript": "~2.10.0", "gulp-tsd": "~0.0.4", "gulp-tslint": "~4.2.1",<% } %> @@ -83,7 +88,7 @@ "gulp-scss-lint": "^0.2.1",<% } if(filters.less) { %> "gulp-less": "^3.0.3", "gulp-recess": "^1.1.2",<% } %> - "isparta": "^3.5.3", + "isparta": "^4.0.0", "utile": "~0.3.0", "nodemon": "^1.3.7", "run-sequence": "^1.1.0", @@ -102,7 +107,7 @@ "grunt-contrib-watch": "~0.6.1",<% if (filters.jade) { %> "grunt-contrib-jade": "^0.15.0",<% } %><% if (filters.less) { %> "grunt-contrib-less": "^1.0.0",<% } %> - "grunt-babel": "~5.0.0",<% if(filters.ts) { %> + "grunt-babel": "~6.0.0",<% if(filters.ts) { %> "grunt-ts": "~5.2.0", "grunt-tsd": "~0.1.0", "grunt-tslint": "~3.0.1",<% } %> @@ -157,7 +162,7 @@ "jasmine-core": "^2.3.4", "karma-jasmine": "~0.3.0", "jasmine-spec-reporter": "^2.4.0",<% } if(filters.babel) { %> - "karma-babel-preprocessor": "^5.2.1",<% } %> + "karma-babel-preprocessor": "^6.0.1",<% } %> "requirejs": "~2.1.11", "phantomjs-prebuilt": "^2.1.4", "proxyquire": "^1.0.1", diff --git a/app/templates/e2e/account(auth)/login/login.spec(jasmine).js b/app/templates/e2e/account(auth)/login/login.spec(jasmine).js index bfade94e6..03ea404df 100644 --- a/app/templates/e2e/account(auth)/login/login.spec(jasmine).js +++ b/app/templates/e2e/account(auth)/login/login.spec(jasmine).js @@ -1,7 +1,7 @@ 'use strict'; var config = browser.params;<% if (filters.mongooseModels) { %> -var UserModel = require(config.serverConfig.root + '/server/api/user/user.model');<% } %><% if (filters.sequelizeModels) { %> +var UserModel = require(config.serverConfig.root + '/server/api/user/user.model').default;<% } %><% if (filters.sequelizeModels) { %> var UserModel = require(config.serverConfig.root + '/server/sqldb').User;<% } %> describe('Login View', function() { diff --git a/app/templates/e2e/account(auth)/login/login.spec(mocha).js b/app/templates/e2e/account(auth)/login/login.spec(mocha).js index 8e5052f10..08758dc07 100644 --- a/app/templates/e2e/account(auth)/login/login.spec(mocha).js +++ b/app/templates/e2e/account(auth)/login/login.spec(mocha).js @@ -1,7 +1,7 @@ 'use strict'; var config = browser.params;<% if (filters.mongooseModels) { %> -var UserModel = require(config.serverConfig.root + '/server/api/user/user.model');<% } %><% if (filters.sequelizeModels) { %> +var UserModel = require(config.serverConfig.root + '/server/api/user/user.model').default;<% } %><% if (filters.sequelizeModels) { %> var UserModel = require(config.serverConfig.root + '/server/sqldb').User;<% } %> describe('Login View', function() { diff --git a/app/templates/e2e/account(auth)/logout/logout.spec(jasmine).js b/app/templates/e2e/account(auth)/logout/logout.spec(jasmine).js index dc688da16..f32722410 100644 --- a/app/templates/e2e/account(auth)/logout/logout.spec(jasmine).js +++ b/app/templates/e2e/account(auth)/logout/logout.spec(jasmine).js @@ -1,7 +1,7 @@ 'use strict'; var config = browser.params;<% if (filters.mongooseModels) { %> -var UserModel = require(config.serverConfig.root + '/server/api/user/user.model');<% } %><% if (filters.sequelizeModels) { %> +var UserModel = require(config.serverConfig.root + '/server/api/user/user.model').default;<% } %><% if (filters.sequelizeModels) { %> var UserModel = require(config.serverConfig.root + '/server/sqldb').User;<% } %> describe('Logout View', function() { diff --git a/app/templates/e2e/account(auth)/logout/logout.spec(mocha).js b/app/templates/e2e/account(auth)/logout/logout.spec(mocha).js index 0609a9012..d1b170272 100644 --- a/app/templates/e2e/account(auth)/logout/logout.spec(mocha).js +++ b/app/templates/e2e/account(auth)/logout/logout.spec(mocha).js @@ -1,7 +1,7 @@ 'use strict'; var config = browser.params;<% if (filters.mongooseModels) { %> -var UserModel = require(config.serverConfig.root + '/server/api/user/user.model');<% } %><% if (filters.sequelizeModels) { %> +var UserModel = require(config.serverConfig.root + '/server/api/user/user.model').default;<% } %><% if (filters.sequelizeModels) { %> var UserModel = require(config.serverConfig.root + '/server/sqldb').User;<% } %> describe('Logout View', function() { diff --git a/app/templates/e2e/account(auth)/signup/signup.spec(jasmine).js b/app/templates/e2e/account(auth)/signup/signup.spec(jasmine).js index f11d73ed8..a70f76f19 100644 --- a/app/templates/e2e/account(auth)/signup/signup.spec(jasmine).js +++ b/app/templates/e2e/account(auth)/signup/signup.spec(jasmine).js @@ -1,7 +1,7 @@ 'use strict'; var config = browser.params;<% if (filters.mongooseModels) { %> -var UserModel = require(config.serverConfig.root + '/server/api/user/user.model');<% } %><% if (filters.sequelizeModels) { %> +var UserModel = require(config.serverConfig.root + '/server/api/user/user.model').default;<% } %><% if (filters.sequelizeModels) { %> var UserModel = require(config.serverConfig.root + '/server/sqldb').User;<% } %> describe('Signup View', function() { diff --git a/app/templates/e2e/account(auth)/signup/signup.spec(mocha).js b/app/templates/e2e/account(auth)/signup/signup.spec(mocha).js index 675f2a8db..f7debbe47 100644 --- a/app/templates/e2e/account(auth)/signup/signup.spec(mocha).js +++ b/app/templates/e2e/account(auth)/signup/signup.spec(mocha).js @@ -1,7 +1,7 @@ 'use strict'; var config = browser.params;<% if (filters.mongooseModels) { %> -var UserModel = require(config.serverConfig.root + '/server/api/user/user.model');<% } %><% if (filters.sequelizeModels) { %> +var UserModel = require(config.serverConfig.root + '/server/api/user/user.model').default;<% } %><% if (filters.sequelizeModels) { %> var UserModel = require(config.serverConfig.root + '/server/sqldb').User;<% } %> describe('Signup View', function() { diff --git a/app/templates/gulpfile.babel(gulp).js b/app/templates/gulpfile.babel(gulp).js index 90f4f6ca4..9b3d1f63d 100644 --- a/app/templates/gulpfile.babel(gulp).js +++ b/app/templates/gulpfile.babel(gulp).js @@ -140,15 +140,16 @@ let styles = lazypipe() let transpileClient = lazypipe() .pipe(plugins.sourcemaps.init) - .pipe(plugins.babel, { - optional: ['es7.classProperties'] - }) + .pipe(plugins.babel) .pipe(plugins.sourcemaps.write, '.');<% } %> let transpileServer = lazypipe() .pipe(plugins.sourcemaps.init) .pipe(plugins.babel, { - optional: ['runtime'] + plugins: [ + 'transform-class-properties', + 'transform-runtime' + ] }) .pipe(plugins.sourcemaps.write, '.'); diff --git a/app/templates/karma.conf.js b/app/templates/karma.conf.js index e6005f372..35190d50e 100644 --- a/app/templates/karma.conf.js +++ b/app/templates/karma.conf.js @@ -47,10 +47,7 @@ module.exports = function(config) { babelPreprocessor: { options: { - sourceMap: 'inline', - optional: [ - 'es7.classProperties' - ] + sourceMap: 'inline' }, filename: function (file) { return file.originalPath.replace(/\.js$/, '.es5.js'); diff --git a/app/templates/protractor.conf.js b/app/templates/protractor.conf.js index ceebb85b2..8e297bb67 100644 --- a/app/templates/protractor.conf.js +++ b/app/templates/protractor.conf.js @@ -65,7 +65,7 @@ var config = { }, onPrepare: function() { - require('babel-core/register');<% if (filters.mocha) { %> + require('babel-register');<% if (filters.mocha) { %> // Load Mocha and Chai + plugins require('./mocha.conf'); diff --git a/app/templates/server/api/user(auth)/index.js b/app/templates/server/api/user(auth)/index.js index ee2f0cf41..fad00f650 100644 --- a/app/templates/server/api/user(auth)/index.js +++ b/app/templates/server/api/user(auth)/index.js @@ -13,4 +13,4 @@ router.put('/:id/password', auth.isAuthenticated(), controller.changePassword); router.get('/:id', auth.isAuthenticated(), controller.show); router.post('/', controller.create); -export default router; +module.exports = router; diff --git a/app/templates/server/app.js b/app/templates/server/app.js index c3e2eaefe..a63b97cab 100644 --- a/app/templates/server/app.js +++ b/app/templates/server/app.js @@ -28,9 +28,9 @@ var socketio = require('socket.io')(server, { serveClient: config.env !== 'production', path: '/socket.io-client' }); -require('./config/socketio')(socketio);<% } %> -require('./config/express')(app); -require('./routes')(app); +require('./config/socketio').default(socketio);<% } %> +require('./config/express').default(app); +require('./routes').default(app); // Start server function startServer() { diff --git a/app/templates/server/auth(auth)/index.js b/app/templates/server/auth(auth)/index.js index 087fdfdcb..09564fe28 100644 --- a/app/templates/server/auth(auth)/index.js +++ b/app/templates/server/auth(auth)/index.js @@ -14,9 +14,9 @@ require('./twitter/passport').setup(User, config);<% } %> var router = express.Router(); -router.use('/local', require('./local'));<% if (filters.facebookAuth) { %> -router.use('/facebook', require('./facebook'));<% } %><% if (filters.twitterAuth) { %> -router.use('/twitter', require('./twitter'));<% } %><% if (filters.googleAuth) { %> -router.use('/google', require('./google'));<% } %> +router.use('/local', require('./local').default);<% if (filters.facebookAuth) { %> +router.use('/facebook', require('./facebook').default);<% } %><% if (filters.twitterAuth) { %> +router.use('/twitter', require('./twitter').default);<% } %><% if (filters.googleAuth) { %> +router.use('/google', require('./google').default);<% } %> export default router; diff --git a/app/templates/server/index.js b/app/templates/server/index.js index 371600910..c3ee5245d 100644 --- a/app/templates/server/index.js +++ b/app/templates/server/index.js @@ -5,7 +5,7 @@ var env = process.env.NODE_ENV = process.env.NODE_ENV || 'development'; if (env === 'development' || env === 'test') { // Register the Babel require hook - require('babel-core/register'); + require('babel-register'); } // Export the application diff --git a/app/templates/server/routes.js b/app/templates/server/routes.js index ed97f5833..dcef9c275 100644 --- a/app/templates/server/routes.js +++ b/app/templates/server/routes.js @@ -11,7 +11,7 @@ export default function(app) { // Insert routes below<% if (filters.auth) { %> app.use('/api/users', require('./api/user')); - app.use('/auth', require('./auth')); + app.use('/auth', require('./auth').default); <% } %> // All undefined asset or api routes should return a 404 app.route('/:url(api|auth|components|app|bower_components|assets)/*') diff --git a/app/templates/server/sqldb(sequelize)/index.js b/app/templates/server/sqldb(sequelize)/index.js index 7401f2e1d..6b45a28e9 100644 --- a/app/templates/server/sqldb(sequelize)/index.js +++ b/app/templates/server/sqldb(sequelize)/index.js @@ -16,4 +16,4 @@ var db = { // Insert models below<% if (filters.sequelizeModels && filters.auth) { %> db.User = db.sequelize.import('../api/user/user.model');<% } %> -export default db; +module.exports = db; diff --git a/endpoint/index.js b/endpoint/index.js index 11dde883e..e4df68f08 100644 --- a/endpoint/index.js +++ b/endpoint/index.js @@ -1,9 +1,9 @@ 'use strict'; // Register the Babel require hook -require('babel-core/register')({ +require('babel-register')({ only: /generator-angular-fullstack\/(?!node_modules)/ }); // Export the generator -exports = module.exports = require('./generator'); +module.exports = require('./generator').default; diff --git a/endpoint/templates/basename.events(models).js b/endpoint/templates/basename.events(models).js index a5eb19f03..f50f8c931 100644 --- a/endpoint/templates/basename.events(models).js +++ b/endpoint/templates/basename.events(models).js @@ -5,7 +5,7 @@ 'use strict'; import {EventEmitter} from 'events';<% if (filters.mongooseModels) { %> -var <%= classedName %> = require('./<%= basename %>.model');<% } if (filters.sequelizeModels) { %> +import <%= classedName %> from './<%= basename %>.model';<% } if (filters.sequelizeModels) { %> var <%= classedName %> = require('<%= relativeRequire(config.get('registerModelsFile')) %>').<%= classedName %>;<% } %> var <%= classedName %>Events = new EventEmitter(); diff --git a/endpoint/templates/basename.socket(socketio).js b/endpoint/templates/basename.socket(socketio).js index 573a6208d..b9ee3ab56 100644 --- a/endpoint/templates/basename.socket(socketio).js +++ b/endpoint/templates/basename.socket(socketio).js @@ -4,7 +4,7 @@ 'use strict'; -var <%= classedName %>Events = require('./<%= basename %>.events'); +import <%= classedName %>Events from './<%= basename %>.events'; // Model events to emit var events = ['save', 'remove']; diff --git a/package.json b/package.json index 55c211fc1..31903d4ba 100644 --- a/package.json +++ b/package.json @@ -34,7 +34,10 @@ "test": "grunt test" }, "dependencies": { - "babel-core": "^5.8.23", + "babel-core": "^6.7.0", + "babel-plugin-transform-class-properties": "^6.6.0", + "babel-preset-es2015": "^6.6.0", + "babel-register": "^6.6.5", "chalk": "^1.1.0", "generator-ng-component": "~0.2.1", "glob": "^6.0.1", diff --git a/test/test-file-creation.js b/test/test-file-creation.js index f4da5a772..80ae2538c 100644 --- a/test/test-file-creation.js +++ b/test/test-file-creation.js @@ -207,6 +207,7 @@ describe('angular-fullstack generator', function () { 'e2e/main/main.po.js', 'e2e/main/main.spec.js', 'e2e/components/navbar/navbar.po.js', + '.babelrc', '.bowerrc', '.buildignore', '.editorconfig',