[web] Restructure and fix builds.
Building web apps seems to be broken. Fix it by restructuring the build
a bit. Namely:
1) Move application-specific TypeScript into "inc/" so all TS share a
root.
2) Update build step to be a little less confusing.
BUG=None
TEST=local
Review-Url: https://codereview.chromium.org/2985273002
diff --git a/web/.gitignore b/web/.gitignore
index c1caf29..5ce46b9 100644
--- a/web/.gitignore
+++ b/web/.gitignore
@@ -7,8 +7,8 @@
apps/*/.tmp
# Ignore compiled JavaScript.
-apps/*/scripts-ts/*.js
-apps/*/scripts-ts/*.js.map
+inc/apps/*/*.js
+inc/apps/*/*.js.map
# Tag files for installed Bower/NPM.
.npm.installed
diff --git a/web/apps/gulp-common.js b/web/apps/gulp-common.js
index be7fc0d..9d01551 100644
--- a/web/apps/gulp-common.js
+++ b/web/apps/gulp-common.js
@@ -59,17 +59,19 @@
exports.setup_common = function(gulp) {
// Verify TypeScript file integrity and formatting.
gulp.task('tslint', function() {
- process.chdir(exports.base);
+ process.chdir(exports.incDir);
- return gulp.src('inc/*/*.ts')
+ return gulp.src(['**/*.ts', '!bower_components/**'])
.pipe(tslint({
- configuration: path.join(exports.base, 'inc', 'tslint.json'),
+ configuration: './tslint.json',
formatter: 'verbose',
}))
.pipe(tslint.report());
});
gulp.task('check-ts', function() {
+ process.chdir(exports.incDir);
+
// Transpile each TypeScript module independently into JavaScript.
var tsconfigPath = path.join(exports.incDir, 'tsconfig.json');
@@ -78,13 +80,13 @@
typeRoots: [path.join(exports.base, 'node_modules', '@types')],
});
- return gulp.src(['**/*.ts', '!bower_components/**'], {cwd: exports.incDir})
+ return gulp.src(['**/*.ts', '!bower_components/**'])
.pipe(tsProj());
});
gulp.task('check-format', function() {
- process.chdir(exports.base);
- return gulp.src('inc/*/*.ts')
+ process.chdir(exports.incDir);
+ return gulp.src(['**/*.ts', '!bower_components/**'])
.pipe(format.checkFormat())
.on('warning', function(e) {
process.stdout.write(e.message);
@@ -93,10 +95,10 @@
});
gulp.task('format', function() {
- process.chdir(exports.base);
+ process.chdir(exports.incDir);
// The base option ensures the glob doesn't strip prefixes.
- return gulp.src('inc/*/*.ts', {base: '.'})
+ return gulp.src(['**/*.ts', '!bower_components/**'])
.pipe(format.format())
.pipe(gulp.dest('.'));
});
@@ -109,12 +111,15 @@
};
// Project-specific tasks.
-exports.setup = function(gulp, config) {
- var APP = path.basename(config.dir);
+exports.setup = function(gulp, appDir, config) {
+ var APP = path.basename(appDir);
var DIST = path.join(exports.out, 'dist', APP);
var layout = {
app: APP,
+ dir: process.cwd(),
+ web: '../..',
+ inc: './inc',
distPath: DIST,
// NOTE: Takes vararg via "arguments".
@@ -160,7 +165,7 @@
var optimizeHtmlTask = function(src, dest) {
var assets = $.useref.assets({
- searchPath: ['.tmp', config.dir]
+ searchPath: ['.tmp', '.']
});
return gulp.src(src)
@@ -190,21 +195,20 @@
// Transpiles "inc/*/*.ts" and deposits the result alongside their source
// "ts" files.
gulp.task('ts', function() {
- // Transpile each TypeScript module independently into JavaScript.
- var tsconfigPath = path.join(exports.incDir, 'tsconfig.json');
-
// Compile the files in "scripts-ts/*.ts" into a single out file.
- var scriptsTs = path.join(config.dir, 'scripts-ts');
- var tsProj = ts.createProject(tsconfigPath, {
+ var appTsDir = path.join(layout.inc, 'apps', layout.app);
+ var tsProj = ts.createProject(path.join(layout.inc, 'tsconfig.json'), {
typeRoots: [path.join(exports.base, 'node_modules', '@types')],
- outFile: 'main.js',
+ outFile: path.join(appTsDir, 'main.js'),
});
- return gulp.src('*.ts', {cwd: scriptsTs, exclude: ['*_test.ts']})
+ return gulp.src(path.join(layout.inc, 'apps', layout.app, '*.ts'), {
+ exclude: ['*_test.ts'],
+ })
.pipe(sourcemaps.init())
- .pipe(tsProj())
- .pipe(sourcemaps.write('.'))
- .pipe(gulp.dest(scriptsTs));
+ .pipe(tsProj())
+ .pipe(sourcemaps.write('.'))
+ .pipe(gulp.dest(layout.inc))
});
// Compile and automatically prefix stylesheets
diff --git a/web/apps/logdog-app/elements/logdog-app/logdog-app.html b/web/apps/logdog-app/elements/logdog-app/logdog-app.html
index 0128ac8..6879776 100644
--- a/web/apps/logdog-app/elements/logdog-app/logdog-app.html
+++ b/web/apps/logdog-app/elements/logdog-app/logdog-app.html
@@ -20,7 +20,7 @@
<link rel="import" href="../../inc/bower_components/paper-toolbar/paper-toolbar.html">
<!-- Inline our main TypeScript -->
-<script src="../../scripts-ts/main.js"></script>
+<script src="../../inc/apps/logdog-app/main.js"></script>
<link rel="import" href="logdog-home-page.html">
<link rel="import" href="../../inc/logdog-app-base/logdog-app-base.html">
diff --git a/web/apps/logdog-app/gulpfile.js b/web/apps/logdog-app/gulpfile.js
index c48dca2..2cbee4e 100644
--- a/web/apps/logdog-app/gulpfile.js
+++ b/web/apps/logdog-app/gulpfile.js
@@ -11,8 +11,7 @@
var luci = require('../gulp-common.js');
var path = require('path');
-luci.setup(gulp, {
- dir: __dirname,
+luci.setup(gulp, __dirname, {
includes: function(gulp, layout) {
return gulp.src([
path.join('inc', 'bower_components', 'page', 'page.js'),
diff --git a/web/apps/logdog-view/elements/logdog-view/logdog-view.html b/web/apps/logdog-view/elements/logdog-view/logdog-view.html
index 2ac08b5..599d123 100644
--- a/web/apps/logdog-view/elements/logdog-view/logdog-view.html
+++ b/web/apps/logdog-view/elements/logdog-view/logdog-view.html
@@ -7,7 +7,7 @@
<link rel="import" href="../../inc/bower_components/polymer/polymer.html">
<!-- Inline our main TypeScript -->
-<script src="../../scripts-ts/main.js"></script>
+<script src="../../inc/apps/logdog-view/main.js"></script>
<link rel="import" href="../../inc/bower_components/paper-styles/default-theme.html">
<link rel="import" href="../../inc/bower_components/paper-styles/typography.html">
diff --git a/web/apps/logdog-view/gulpfile.js b/web/apps/logdog-view/gulpfile.js
index 929c690..64e44a1 100644
--- a/web/apps/logdog-view/gulpfile.js
+++ b/web/apps/logdog-view/gulpfile.js
@@ -10,6 +10,4 @@
var gulp = require('gulp');
var luci = require('../gulp-common.js');
-luci.setup(gulp, {
- dir: __dirname,
-});
+luci.setup(gulp, __dirname, {});
diff --git a/web/apps/rpcexplorer/gulpfile.js b/web/apps/rpcexplorer/gulpfile.js
index 2b6ba02..1f47583 100644
--- a/web/apps/rpcexplorer/gulpfile.js
+++ b/web/apps/rpcexplorer/gulpfile.js
@@ -11,8 +11,7 @@
var luci = require('../gulp-common.js');
var path = require('path');
-luci.setup(gulp, {
- dir: __dirname,
+luci.setup(gulp, __dirname, {
includes: function(gulp, layout) {
return gulp.src([
path.join('inc', 'bower_components', 'bootstrap', 'dist', 'css',
diff --git a/web/apps/logdog-app/scripts-ts/main.ts b/web/inc/apps/logdog-app/main.ts
similarity index 75%
rename from web/apps/logdog-app/scripts-ts/main.ts
rename to web/inc/apps/logdog-app/main.ts
index c5773c9..d9ee3a5 100644
--- a/web/apps/logdog-app/scripts-ts/main.ts
+++ b/web/inc/apps/logdog-app/main.ts
@@ -4,4 +4,4 @@
that can be found in the LICENSE file.
*/
-///<reference path="../inc/logdog-stream-view/model.ts" />
+///<reference path="../../logdog-stream-view/model.ts" />
diff --git a/web/apps/logdog-view/scripts-ts/logdog-view.ts b/web/inc/apps/logdog-view/logdog-view.ts
similarity index 75%
rename from web/apps/logdog-view/scripts-ts/logdog-view.ts
rename to web/inc/apps/logdog-view/logdog-view.ts
index c5773c9..d9ee3a5 100644
--- a/web/apps/logdog-view/scripts-ts/logdog-view.ts
+++ b/web/inc/apps/logdog-view/logdog-view.ts
@@ -4,4 +4,4 @@
that can be found in the LICENSE file.
*/
-///<reference path="../inc/logdog-stream-view/model.ts" />
+///<reference path="../../logdog-stream-view/model.ts" />