Skip to content
This repository has been archived by the owner on Apr 3, 2022. It is now read-only.

Commit

Permalink
Merge pull request #104 from omahajs/bugfix/native-app-webpack-support
Browse files Browse the repository at this point in the history
Bugfix/native app webpack support
  • Loading branch information
jhwohlgemuth authored Apr 3, 2018
2 parents 30dce42 + 3cc83cf commit 1fe4b5c
Show file tree
Hide file tree
Showing 25 changed files with 111 additions and 61 deletions.
20 changes: 10 additions & 10 deletions generators/app/gruntTaskConfigs.js
Original file line number Diff line number Diff line change
Expand Up @@ -136,9 +136,9 @@ module.exports = {
fonts: {
files: [{
expand: true,
flatten: true,
src: ['<%= folders.assets %>/<%= files.fonts %>'],
dest: '<%= folders.dist %>/<%= deployed.assets %>/<%= deployed.fonts %>',
cwd: '<%= folders.assets %>/fonts',
src: ['<%= files.fonts %>'],
dest: '<%= folders.dist %>/<%= deployed.assets %>/fonts',
filter: 'isFile'
}]
},
Expand All @@ -158,18 +158,18 @@ module.exports = {
images: {
files: [{
expand: true,
flatten: false,
src: ['<%= folders.assets %>/<%= files.images %>'],
dest: '<%= folders.dist %>',
cwd: '<%= folders.assets %>/images',
src: ['<%= files.images %>'],
dest: '<%= folders.dist %>/<%= deployed.assets %>/images',
filter: 'isFile'
}]
},
workers: {
files: [{
expand: true,
flatten: false,
src: ['<%= folders.assets %>/workers/<%= files.scripts %>'],
dest: '<%= folders.dist %>',
cwd: '<%= folders.assets %>/workers',
src: ['<%= files.scripts %>'],
dest: '<%= folders.dist %>/<%= deployed.assets %>/workers',
filter: 'isFile'
}]
}
Expand Down Expand Up @@ -297,7 +297,7 @@ module.exports = {
expand: true,
flatten: false,
cwd: './',
src: ['<%= folders.assets %>/<%= files.images %>'],
src: ['<%= folders.assets %>/images/<%= files.images %>'],
dest: '<%= folders.dist %>'
}]
}
Expand Down
19 changes: 13 additions & 6 deletions generators/native/index.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@


const { set } = require('lodash');

const Generator = require('yeoman-generator');
const banner = require('../app/banner');
const footer = require('../app/doneMessage');
Expand All @@ -18,7 +21,8 @@ const COMMAND_LINE_OPTIONS = {

module.exports = class extends Generator {
initializing() {
this.log(banner);
const generator = this;
generator.log(banner);
}
constructor(args, opts) {
super(args, opts);
Expand All @@ -42,24 +46,26 @@ module.exports = class extends Generator {
writing() {
const generator = this;
const { config } = generator;
const isWebapp = config.get('isWebapp');
const { isWebapp, moduleFormat } = config.getAll();
const rendererIndexPath = isWebapp ? 'app/index.html' : 'index.html';
generator.moduleFormat = moduleFormat;
copy('bin/preload.js', 'bin/preload.js', generator);
copyTpl('_index.html', config.get('sourceDirectory') + rendererIndexPath, generator);
copyTpl('_index.js', 'index.js', set(generator, 'rendererIndexPath', rendererIndexPath));
}
install() {
const generator = this;
//
// Install dependencies
//
const dependencies = ['electron', 'electron-context-menu', 'electron-debug', 'electron-is-dev'];
const devDependencies = ['spectron', 'electron-reloader'].concat();
this.npmInstall(dependencies, { save: true });
this.npmInstall(devDependencies, { saveDev: true });
generator.npmInstall(dependencies, { save: true });
generator.npmInstall(devDependencies, { saveDev: true });
//
// Configure package.json
//
extend(this.destinationPath('package.json'), {
extend(generator.destinationPath('package.json'), {
main: './index.js',
scripts: {
start: 'electron index',
Expand All @@ -68,6 +74,7 @@ module.exports = class extends Generator {
});
}
end() {
this.log(footer(this));
const generator = this;
generator.log(footer(generator));
}
};
2 changes: 1 addition & 1 deletion generators/native/templates/_index.js
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ const createWindow = () => {
});
Menu.setApplicationMenu(applicationMenu);
ContextMenu({prepend: (params, browserWindow) => menuItems});
mainWindow.loadURL(`file://${__dirname}/renderer/app/index.html`);
mainWindow.loadURL(`file://${__dirname}/renderer/<% if (moduleFormat === 'amd') { %>app<% } else {%>dist/client<% } %>/index.html`);
//
// Open dev console
//
Expand Down
1 change: 1 addition & 0 deletions generators/project/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ const getProjectVariables = generator => {
const { projectName } = use;
return {
projectName,
isNative: generator.config.get('isNative'),
sourceDirectory: getSourceDirectory(generator),
useBenchmark: use.benchmark && !skipBenchmark && !slim,
useCoveralls: use.coveralls && !skipCoveralls && !slim,
Expand Down
4 changes: 1 addition & 3 deletions generators/project/templates/_Gruntfile.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,7 @@ module.exports = function(grunt) {
folders: config.folders,
files: config.files,
deployed: {
assets: config.folders.assets.split('/')[1],
images: config.files.images.split('/')[0],
fonts: config.files.fonts.split('/')[0]
assets: config.folders.assets.split('/')[1]
}
});
require('time-grunt')(grunt);
Expand Down
4 changes: 2 additions & 2 deletions generators/project/templates/config/_default.json
Original file line number Diff line number Diff line change
Expand Up @@ -26,13 +26,13 @@
},
"index": "index.html",
"scripts": "**/*.js",
"fonts": "**/*.{ttf,woff,eot,svg}",
"images": "**/*.{png,jpg,gif,svg}",
"mainScript": "main.js",
"configScript": "config.js",
"models": "models/**/*.js",
"views": "views/**/*.js",
"controllers": "controllers/**/*.js",
"fonts": "fonts/*.{ttf,woff,eot,svg}",
"images": "images/**/*.{png,jpg,gif,svg}",
"templates": "templates/**/*.hbs"
}
}
Expand Down
2 changes: 1 addition & 1 deletion generators/project/templates/config/_webpack.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ module.exports = {
app: './<%= sourceDirectory %>app/main.js'
},
output: {
path: resolve('./dist/client'),
path: resolve('./<% if (isNative) { %><%= sourceDirectory %><% } %>dist/client'),
filename: 'bundle.min.js'
},
module: {
Expand Down
7 changes: 7 additions & 0 deletions generators/webapp/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -209,6 +209,13 @@ module.exports = class extends Generator {
}
}
});
config.get('isNative') && extend(generator.destinationPath('config/default.json'), {
grunt: {
folders: {
dist: `${sourceDirectory}dist`
}
}
});
//
// Configure package.json
//
Expand Down
2 changes: 1 addition & 1 deletion generators/webapp/templates/_style.css
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

body {
background-color: white;
background-image: url("../<%= sourceDirectory %>assets/images/logo.png");
background-image: url("../<% if (!isNative) { %><%= sourceDirectory %><% } %>assets/images/logo.png");
background-position: 50% -50%;
background-repeat: no-repeat;
background-size: 250px;
Expand Down
2 changes: 1 addition & 1 deletion generators/webapp/templates/_style.less
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

body {
background-color: white;
background-image: url("../<%= sourceDirectory %>assets/images/logo.png");
background-image: url("../<% if (!isNative) { %><%= sourceDirectory %><% } %>assets/images/logo.png");
background-position: 50% -50%;
background-repeat: no-repeat;
background-size: 250px;
Expand Down
2 changes: 1 addition & 1 deletion generators/webapp/templates/_style.scss
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

body {
background-color: white;
background-image: url("../<%= sourceDirectory %>assets/images/logo.png");
background-image: url("../<% if (!isNative) { %><%= sourceDirectory %><% } %>assets/images/logo.png");
background-position: 50% -50%;
background-repeat: no-repeat;
background-size: 250px;
Expand Down
9 changes: 6 additions & 3 deletions generators/webapp/templates/tasks/webapp.js
Original file line number Diff line number Diff line change
Expand Up @@ -48,9 +48,12 @@ module.exports = function(grunt) {
'postcss:dev',/* post-process */
'postcss:prod'
]);<% if (moduleFormat !== 'amd') { %>
task('bundle-scripts', [
<% if (useBrowserify) { %>'browserify:bundle'<% } %>
<% if (useWebpack) { %>'webpack:bundle'<% } %>
task('bundle-scripts', [<% if (useBrowserify) { %>
'browserify:bundle'<% } %><% if (useWebpack) { %>
'webpack:bundle'<% } %><% if (isNative) { %>,
'htmlmin',
'copy',
'replace:bundle-url'<% } %>
]);<% } %>
task('compile', [
'clean:compile',
Expand Down
20 changes: 10 additions & 10 deletions src/app/gruntTaskConfigs.js
Original file line number Diff line number Diff line change
Expand Up @@ -136,9 +136,9 @@ module.exports = {
fonts: {
files: [{
expand: true,
flatten: true,
src: ['<%= folders.assets %>/<%= files.fonts %>'],
dest: '<%= folders.dist %>/<%= deployed.assets %>/<%= deployed.fonts %>',
cwd: '<%= folders.assets %>/fonts',
src: ['<%= files.fonts %>'],
dest: '<%= folders.dist %>/<%= deployed.assets %>/fonts',
filter: 'isFile'
}]
},
Expand All @@ -158,18 +158,18 @@ module.exports = {
images: {
files: [{
expand: true,
flatten: false,
src: ['<%= folders.assets %>/<%= files.images %>'],
dest: '<%= folders.dist %>',
cwd: '<%= folders.assets %>/images',
src: ['<%= files.images %>'],
dest: '<%= folders.dist %>/<%= deployed.assets %>/images',
filter: 'isFile'
}]
},
workers: {
files: [{
expand: true,
flatten: false,
src: ['<%= folders.assets %>/workers/<%= files.scripts %>'],
dest: '<%= folders.dist %>',
cwd: '<%= folders.assets %>/workers',
src: ['<%= files.scripts %>'],
dest: '<%= folders.dist %>/<%= deployed.assets %>/workers',
filter: 'isFile'
}]
}
Expand Down Expand Up @@ -297,7 +297,7 @@ module.exports = {
expand: true,
flatten: false,
cwd: './',
src: ['<%= folders.assets %>/<%= files.images %>'],
src: ['<%= folders.assets %>/images/<%= files.images %>'],
dest: '<%= folders.dist %>'
}]
}
Expand Down
22 changes: 14 additions & 8 deletions src/native/index.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
/* @flow */
import type {NativeGenerator} from '../types';

const {set} = require('lodash');
const Generator = require('yeoman-generator');
const banner = require('../app/banner');
Expand All @@ -19,11 +21,12 @@ const COMMAND_LINE_OPTIONS = {

module.exports = class extends Generator {
initializing() {
this.log(banner);
const generator: NativeGenerator = this;
generator.log(banner);
}
constructor(args: any, opts: any) {
super(args, opts);
const generator = this;
const generator: NativeGenerator = this;
const {config, options} = generator;
Object.keys(COMMAND_LINE_OPTIONS).forEach(option => {
generator.option(option, COMMAND_LINE_OPTIONS[option]);
Expand All @@ -41,15 +44,17 @@ module.exports = class extends Generator {
}
}
writing() {
const generator = this;
const generator: NativeGenerator = this;
const {config} = generator;
const isWebapp = config.get('isWebapp');
const {isWebapp, moduleFormat} = config.getAll();
const rendererIndexPath = isWebapp ? 'app/index.html' : 'index.html';
generator.moduleFormat = moduleFormat;
copy('bin/preload.js', 'bin/preload.js', generator);
copyTpl('_index.html', config.get('sourceDirectory') + rendererIndexPath, generator);
copyTpl('_index.js', 'index.js', set(generator, 'rendererIndexPath', rendererIndexPath));
}
install() {
const generator: NativeGenerator = this;
//
// Install dependencies
//
Expand All @@ -67,12 +72,12 @@ module.exports = class extends Generator {
// 'electron-builder',// https://github.com/electron-userland/electron-builder
// 'electron-packager'// https://github.com/electron-userland/electron-packager
);
this.npmInstall(dependencies, {save: true});
this.npmInstall(devDependencies, {saveDev: true});
generator.npmInstall(dependencies, {save: true});
generator.npmInstall(devDependencies, {saveDev: true});
//
// Configure package.json
//
extend(this.destinationPath('package.json'), {
extend(generator.destinationPath('package.json'), {
main: './index.js',
scripts: {
start: 'electron index',
Expand All @@ -81,6 +86,7 @@ module.exports = class extends Generator {
});
}
end() {
this.log(footer(this));
const generator: NativeGenerator = this;
generator.log(footer(generator));
}
};
2 changes: 1 addition & 1 deletion src/native/templates/_index.js
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ const createWindow = () => {
});
Menu.setApplicationMenu(applicationMenu);
ContextMenu({prepend: (params, browserWindow) => menuItems});
mainWindow.loadURL(`file://${__dirname}/renderer/app/index.html`);
mainWindow.loadURL(`file://${__dirname}/renderer/<% if (moduleFormat === 'amd') { %>app<% } else {%>dist/client<% } %>/index.html`);
//
// Open dev console
//
Expand Down
1 change: 1 addition & 0 deletions src/project/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ const getProjectVariables = (generator: ProjectGenerator) => {
const {projectName} = use;
return {
projectName,
isNative: generator.config.get('isNative'),
sourceDirectory: getSourceDirectory(generator),
useBenchmark: use.benchmark && !skipBenchmark && !slim,
useCoveralls: use.coveralls && !skipCoveralls && !slim,
Expand Down
4 changes: 1 addition & 3 deletions src/project/templates/_Gruntfile.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,7 @@ module.exports = function(grunt) {
folders: config.folders,
files: config.files,
deployed: {
assets: config.folders.assets.split('/')[1],
images: config.files.images.split('/')[0],
fonts: config.files.fonts.split('/')[0]
assets: config.folders.assets.split('/')[1]
}
});
require('time-grunt')(grunt);
Expand Down
4 changes: 2 additions & 2 deletions src/project/templates/config/_default.json
Original file line number Diff line number Diff line change
Expand Up @@ -26,13 +26,13 @@
},
"index": "index.html",
"scripts": "**/*.js",
"fonts": "**/*.{ttf,woff,eot,svg}",
"images": "**/*.{png,jpg,gif,svg}",
"mainScript": "main.js",
"configScript": "config.js",
"models": "models/**/*.js",
"views": "views/**/*.js",
"controllers": "controllers/**/*.js",
"fonts": "fonts/*.{ttf,woff,eot,svg}",
"images": "images/**/*.{png,jpg,gif,svg}",
"templates": "templates/**/*.hbs"
}
}
Expand Down
2 changes: 1 addition & 1 deletion src/project/templates/config/_webpack.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ module.exports = {
app: './<%= sourceDirectory %>app/main.js'
},
output: {
path: resolve('./dist/client'),
path: resolve('./<% if (isNative) { %><%= sourceDirectory %><% } %>dist/client'),
filename: 'bundle.min.js'
},
module: {
Expand Down
Loading

0 comments on commit 1fe4b5c

Please sign in to comment.