Skip to content
This repository was archived by the owner on Feb 26, 2023. It is now read-only.
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
67 changes: 48 additions & 19 deletions generators/app/index.js → app/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -18,56 +18,85 @@ function copyFromGlob(generator, paths) {
});
}

var AngulpifyGenerator = module.exports = yeoman.generators.Base.extend({
module.exports = yeoman.generators.Base.extend({
initializing: function () {
this.pkg = require('../package.json');
},

constructor: function () {
yeoman.generators.Base.apply(this, arguments);

this.option('skip-install', {desc: 'Skip the bower and node installations'});

this.option('test-framework', {
desc: 'Test framework to be invoked',
type: String,
defaults: 'mocha'
});
},
initializing: function () {},

prompting: function () {
var done = this.async();
var welcomeMessage = 'Out of the box I include '+ chalk.red('AngularJS')+', '+chalk.red('Gulp')+' and '+chalk.red('Browserify')+' to build your app.';
this.log(yosay(welcomeMessage));

var prompts = [
{
type: 'input', name: 'project', message: 'What\'s your project name?',
type: 'input',
name: 'project',
message: 'What\'s your project name?',
default: this.appname
},
{
type: 'list', name: 'scripts', message: 'Would you like to use a language other than JavaScript?',
choices: [
{name: 'Nop, JavaScript please.', value: {name: 'js', extensions: '.js'}}
],
default: 0
},
{
type: 'list', name: 'styles', message: 'Would you like to use a preprocessor?',
choices: [
{name: 'Less', value: {name: 'less', extensions: '.less'}},
{name: 'Sass', value: {name: 'sass', extensions: '.scss'}},
{name: 'Nop, CSS please.', value: {name: 'css', extensions: '.css'}},
{name: 'Less', value: 'less'},
{name: 'Sass', value: 'sass'},
{name: 'Nop, CSS please.', value: 'css'}
],
default: 2
},
{
type: 'list', name: 'templates', message: 'Would you like to use a template engine?',
type: 'list',
name: 'templates',
message: 'Would you like to use a template engine?',
choices: [
{name: 'Jade', value: {name: 'jade', extensions: '.jade'}},
{name: 'Nop. HTML please.', value: {name: 'html', extensions: '.html'}}
{name: 'Jade', value: 'jade'},
{name: 'Nop. HTML please.', value: 'html'}
],
default: 1
}
];

this.prompt(prompts, function (answers) {

this.project = answers.project.trim().replace(/\s+/g, '-').toLowerCase();
this.scripts = answers.scripts;
this.styles = answers.styles;
this.templates = answers.templates;

//TODO: Refactor the way extension names are handled
// Umba-wamba to keep things working after prompts changes.

this.scripts = {name: 'js', extensions: '.js'};

if(answers.styles === 'less'){
this.styles = {name: 'less', extensions: '.less'};
}else if(answers.styles === 'sass'){
this.styles = {name: 'sass', extensions: '.scss'};
}else{
this.styles = {name: 'css', extensions: '.css'};
}

if(answers.templates === 'jade'){
this.templates = {name: 'jade', extensions: '.jade'};
}else{
this.templates = {name: 'html', extensions: '.html'};
}

done();
}.bind(this));
},

configuring: function () {

// Scripts
this.isJs = function () { return this.scripts.name === 'js'; };
// Styles
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,28 +5,28 @@ var utilities = require('./utilities');

// Folders & files names
var src = './src';
var assets = 'assets';
var assets_images = 'images';
var scripts = 'scripts';
var scripts_app = 'app';
var scripts_app_entry = 'app.module<%=scripts.extensions%>';
var scripts_app_vendors = 'vendors<%=scripts.extensions%>';
var scripts_config = utilities.config.getFile() || (utilities.env.getEnv() + '.config.json');
var scripts_index = 'index<%=templates.extensions%>';
var scripts_app_output = 'app.js';
var scripts_app_output_partial = 'app*';
var scripts_vendors_output = 'vendors.js';
var scripts_vendors_output_partial = 'vendors*';
var styles = 'styles';
var styles_main = 'main<%=styles.extensions%>';
var styles_output = 'app';
var assets = 'assets';
var assets_images = 'images';
var scripts = 'scripts';
var scripts_app = 'app';
var scripts_app_entry = 'app.module<%=scripts.extensions%>';
var scripts_app_vendors = 'vendors<%=scripts.extensions%>';
var scripts_config = utilities.config.getFile() || (utilities.env.getEnv() + '.config.json');
var scripts_index = 'index<%=templates.extensions%>';
var scripts_app_output = 'app.js';
var scripts_app_output_partial = 'app*';
var scripts_vendors_output = 'vendors.js';
var scripts_vendors_output_partial = 'vendors*';
var styles = 'styles';
var styles_main = 'main<%=styles.extensions%>';
var styles_output = 'app';
var build = './build';
var dist = './dist';
var tmp = './.tmp';
var tmp_config_module = '<%=project%>.config';
var tmp_config_output = 'config';
var tmp_templates_module = '<%=project%>.templates';
var tmp_templates_output = 'templates.js';
var tmp_config_module = '<%=project%>.config';
var tmp_config_output = 'config';
var tmp_templates_module = '<%=project%>.templates';
var tmp_templates_output = 'templates.js';

var dest = utilities.env.isDev() ? build : dist;

Expand Down Expand Up @@ -78,61 +78,61 @@ var configuration = {
},
index: {
src: path.join(src, scripts, scripts_index),
injectSrc: [
injectSrc: [
path.join(dest, scripts_vendors_output_partial + '.js'),
path.join(dest, scripts_app_output_partial + '.{css,js}')
],
inject: {
inject: {
ignorePath: path.join(dest),
addRootSlash: false
addRootSlash: false
},
<% if (isHtml()) { %>minifyHtml<% } else if (isJade()) { %>jade<% } %>: {},
dest: dest
},
lint: {
src: path.join(src, '**/*<%=scripts.extensions%>')
},
serve: {
browserSync: {
server: {baseDir: dest},
open: false
}
},
styles: {
src: path.join(src, styles, styles_main),
<% if (isHtml()) { %>minifyHtml<% } else if (isJade()) { %>jade<% } %>: {},
dest: dest
},
lint: {
src: path.join(src, '**/*<%=scripts.extensions%>')
},
serve: {
browserSync: {
server: {baseDir: dest},
open: false
}
},
styles: {
src: path.join(src, styles, styles_main),
basename: styles_output,
autoprefixer: {browsers: ['last 2 versions']},
<% if (isSass()) { %>sass: {
sourcemap: utilities.env.isDev(),
<% if (isSass()) { %>sass: {
sourcemap: utilities.env.isDev(),
style: 'compressed'
},<% } else if (isLess()) { %>less: {},<% } %>
dest: dest
},
templates: {
src: path.join(src, scripts, scripts_app, '**/*<%=templates.extensions%>'),
<% if (isHtml()) { %>minifyHTML<% } else if (isJade()) { %>jade<% } %>: {},
templateCache: {
filename: tmp_templates_output,
options: {
moduleSystem: 'Browserify',
standalone: true,
module: tmp_templates_module,
base: function (file) {
return path.basename(file.relative);
}
},<% } else if (isLess()) { %>less: {},<% } %>
dest: dest
},
templates: {
src: path.join(src, scripts, scripts_app, '**/*<%=templates.extensions%>'),
<% if (isHtml()) { %>minifyHTML<% } else if (isJade()) { %>jade<% } %>: {},
templateCache: {
filename: tmp_templates_output,
options: {
moduleSystem: 'Browserify',
standalone: true,
module: tmp_templates_module,
base: function (file) {
return path.basename(file.relative);
}
},
dest: tmp
}
},
watch: {
lint: path.join(src, scripts, scripts_app, '**/*<%=scripts.extensions%>'),
dest: tmp
},
watch: {
lint: path.join(src, scripts, scripts_app, '**/*<%=scripts.extensions%>'),
index: path.join(src, scripts, scripts_index),
config: path.join(src, scripts, scripts_config),
templates: path.join(src, scripts, scripts_app, '**/*<%=templates.extensions%>'),
styles: path.join(src, styles, '**/*<%=styles.extensions%>'),
styles_output: styles_output + '.min.css',
reload: path.join(dest, '**/*.{js,html}')
}
}
};

module.exports = configuration;
17 changes: 11 additions & 6 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,21 +1,24 @@
{
"name": "generator-angulpify",
"version": "1.0.0",
"description": "Yeoman generator involving AngularJS, Gulp and Browserify",
"description": "Yeoman generator for AngularJS apps using Gulp and Browserify",
"license": "MIT",
"repository": "jgoux/generator-angulpify",
"author": {
"name": "Julien Goux",
"email": "julien.goux@live.fr",
"url": "https://github.com/jgoux"
},
"main": "app/index.js",
"engines": {
"node": ">=0.10.0",
"npm": ">=1.3"
"node": ">=0.10.0"
},
"scripts": {
"test": "mocha --reporter spec"
"test": "mocha"
},
"files": [
"app"
],
"keywords": [
"yeoman-generator",
"angularjs",
Expand All @@ -29,10 +32,12 @@
"globby": "^1.0.0",
"gulp": "^3.8.10",
"yeoman-generator": "^0.18.3",
"yo": "^1.3.3",
"yosay": "^1.0.0"
},
"devDependencies": {
"mocha": "^2.0.1"
"mocha": "*"
},
"peerDependencies": {
"yo": ">=1.0.0"
}
}
Loading