Skip to content

Commit 774a21b

Browse files
committed
Node back-end support added
1 parent e56597a commit 774a21b

File tree

10 files changed

+213
-74
lines changed

10 files changed

+213
-74
lines changed

README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,8 @@ npm start
4242

4343
## Release History
4444

45+
* 0.1.2
46+
* Back-end Node support added
4547
* 0.1.1
4648
* Folder structure changed
4749
* 0.1.0

app/app.component.js.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

app/vendor.min.js

Lines changed: 33 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

db/seed.js

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
var locallydb = require('locallydb');
2+
3+
var db = new locallydb('db');
4+
var collection = db.collection('testcollection');
5+
6+
if (collection.items.length === 0)
7+
{
8+
collection.insert([
9+
{key: "value"}
10+
]);
11+
}
12+
13+
//console.log(collection.items.length);

db/testcollection

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{"header":{"$created":"2016-04-12T23:55:31.215Z","$updated":"2016-04-12T23:55:31.215Z","lcid":-1},"items":[]}

gulpfile.js

Lines changed: 101 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -1,65 +1,127 @@
11
var gulp = require('gulp');
22

3+
/* DEV FOLDERS */
34
var appDev = 'src/';
45
var assetsDev = 'assets/';
56

7+
/* PROD FOLDERS */
68
var appProd = 'app/';
79
var assetsProd = 'app/assets/';
810

9-
/* Mixed */
10-
var ext_replace = require('gulp-ext-replace');
11+
var BROWSER_SYNC_RELOAD_DELAY = 500;
1112

12-
/* CSS */
13-
var postcss = require('gulp-postcss');
14-
var sourcemaps = require('gulp-sourcemaps');
15-
var autoprefixer = require('autoprefixer');
16-
var precss = require('precss');
17-
var cssnano = require('cssnano');
18-
19-
/* JS & TS */
20-
var jsuglify = require('gulp-uglify');
21-
var typescript = require('gulp-typescript');
22-
23-
/* Images */
24-
var imagemin = require('gulp-imagemin');
13+
var ext_replace = require('gulp-ext-replace'),
14+
postcss = require('gulp-postcss'),
15+
sourcemaps = require('gulp-sourcemaps'),
16+
autoprefixer = require('autoprefixer'),
17+
precss = require('precss'),
18+
cssnano = require('cssnano'),
19+
concat = require('gulp-concat'),
20+
rename = require('gulp-rename'),
21+
uglify = require('gulp-uglify'),
22+
typescript = require('gulp-typescript'),
23+
imagemin = require('gulp-imagemin'),
24+
nodemon = require('gulp-nodemon'),
25+
browserSync = require('browser-sync');
2526

2627
var tsProject = typescript.createProject('tsconfig.json');
2728

28-
gulp.task('build-css', function () {
29-
return gulp.src(assetsDev + 'scss/*.scss')
30-
.pipe(sourcemaps.init())
31-
.pipe(postcss([precss, autoprefixer, cssnano]))
32-
.pipe(sourcemaps.write())
33-
.pipe(ext_replace('.css'))
34-
.pipe(gulp.dest(assetsProd + 'css/'));
29+
gulp.task('build-vendor', function() {
30+
return gulp.src([
31+
/* AnguLAR 2 required libraries */
32+
/* IE required polyfills, in this exact order */
33+
'node_modules/es6-shim/es6-shim.min.js',
34+
'node_modules/systemjs/dist/system-polyfills.js',
35+
'node_modules/angular2/es6/dev/src/testing/shims_for_IE.js',
36+
'node_modules/angular2/bundles/angular2-polyfills.js',
37+
'node_modules/systemjs/dist/system.src.js',
38+
'node_modules/rxjs/bundles/Rx.js',
39+
'node_modules/angular2/bundles/angular2.js',
40+
'node_modules/angular2/bundles/router.dev.js',
41+
'node_modules/angular2/bundles/http.js'
42+
])
43+
.pipe(concat('vendor.js'))
44+
.pipe(rename({suffix: '.min'}))
45+
.pipe(uglify())
46+
.pipe(gulp.dest('app/'));
3547
});
3648

3749
gulp.task('build-ts', function () {
38-
return gulp.src(appDev + '**/*.ts')
39-
.pipe(sourcemaps.init())
40-
.pipe(typescript(tsProject))
41-
.pipe(sourcemaps.write())
42-
//.pipe(jsuglify())
43-
.pipe(gulp.dest(appProd));
50+
return gulp.src(appDev + '**/*.ts')
51+
.pipe(sourcemaps.init())
52+
.pipe(typescript(tsProject))
53+
.pipe(sourcemaps.write())
54+
//.pipe(jsuglify())
55+
.pipe(gulp.dest(appProd));
56+
});
57+
58+
gulp.task('build-css', function () {
59+
return gulp.src(assetsDev + 'scss/*.scss')
60+
.pipe(sourcemaps.init())
61+
.pipe(postcss([precss, autoprefixer, cssnano]))
62+
.pipe(sourcemaps.write())
63+
.pipe(ext_replace('.css'))
64+
.pipe(gulp.dest(assetsProd + 'css/'));
4465
});
4566

4667
gulp.task('build-img', function () {
47-
return gulp.src(assetsDev + 'img/**/*')
48-
.pipe(imagemin({
49-
progressive: true
50-
}))
51-
.pipe(gulp.dest(assetsProd + 'img/'));
68+
return gulp.src(assetsDev + 'img/**/*')
69+
.pipe(imagemin({
70+
progressive: true
71+
}))
72+
.pipe(gulp.dest(assetsProd + 'img/'));
5273
});
5374

5475
gulp.task('build-html', function () {
55-
return gulp.src(appDev + '**/*.html')
56-
.pipe(gulp.dest(appProd));
76+
return gulp.src(appDev + '**/*.html')
77+
.pipe(gulp.dest(appProd));
78+
});
79+
80+
gulp.task('nodemon', function(cb) {
81+
var called = false;
82+
return nodemon({
83+
// nodemon our expressjs server
84+
script: 'server.js',
85+
// watch core server file(s) that require server restart on change
86+
watch: ['server.js', 'server/**/*.js']
87+
})
88+
.on('start', function onStart() {
89+
// ensure start only got called once
90+
if (!called) { cb(); }
91+
called = true;
92+
})
93+
.on('restart', function onRestart() {
94+
// reload connected browsers after a slight delay
95+
setTimeout(function reload() {
96+
browserSync.reload({
97+
stream: false
98+
});
99+
}, BROWSER_SYNC_RELOAD_DELAY);
100+
});
101+
});
102+
103+
gulp.task('browser-sync', ['nodemon'], function() {
104+
// for more browser-sync config options: http://www.browsersync.io/docs/options/
105+
browserSync({
106+
// informs browser-sync to proxy our expressjs app which would run at the following location
107+
proxy: 'http://localhost:3001',
108+
// informs browser-sync to use the following port for the proxied app
109+
// notice that the default port is 3000, which would clash with our expressjs
110+
port: 4000,
111+
// open the proxied app in chrome
112+
browser: 'google chrome'
113+
});
114+
});
115+
116+
gulp.task('bs-reload', function() {
117+
browserSync.reload();
57118
});
58119

59120
gulp.task('watch', function () {
60-
gulp.watch(appDev + '**/*.ts', ['build-ts']);
61-
gulp.watch(assetsDev + 'scss/**/*.scss', ['build-css']);
62-
gulp.watch(assetsDev + 'img/*', ['build-img']);
121+
gulp.watch(appDev + '**/*.ts', ['build-ts', browserSync.reload]);
122+
gulp.watch(assetsDev + 'scss/**/*.scss', ['build-css', browserSync.reload]);
123+
gulp.watch(assetsDev + 'img/*', ['build-img', browserSync.reload]);
124+
gulp.watch('*.html', ['bs-reload']);
63125
});
64126

65-
gulp.task('default', ['watch', 'build-ts', 'build-css']);
127+
gulp.task('default', ['build-vendor', 'watch', 'build-ts', 'build-css', 'browser-sync']);

index.html

Lines changed: 15 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,37 +1,24 @@
11
<!doctype>
22
<html>
3-
<head>
3+
<head>
44
<base href="/">
55
<title>Angular 2 boilerplate</title>
66
<meta name="viewport" content="width=device-width, initial-scale=1">
7-
<!-- Load libraries -->
8-
<!-- IE required polyfills, in this exact order -->
9-
<script src="node_modules/es6-shim/es6-shim.min.js"></script>
10-
<script src="node_modules/systemjs/dist/system-polyfills.js"></script>
11-
<script src="node_modules/angular2/es6/dev/src/testing/shims_for_IE.js"></script>
12-
<script src="node_modules/angular2/bundles/angular2-polyfills.js"></script>
13-
<script src="node_modules/systemjs/dist/system.src.js"></script>
14-
<script src="node_modules/rxjs/bundles/Rx.js"></script>
15-
<script src="node_modules/angular2/bundles/angular2.js"></script>
16-
<script src="node_modules/angular2/bundles/router.dev.js"></script>
17-
<script src="node_modules/angular2/bundles/http.js"></script>
18-
7+
<script src="app/vendor.min.js"></script>
198
<link rel="stylesheet" href="app/assets/css/app.css">
20-
</head>
21-
<body>
22-
<my-app>Loading...</my-app>
23-
24-
<script>
25-
System.config({
26-
packages: {
9+
</head>
10+
<body>
11+
<my-app>Loading...</my-app>
12+
<script>
13+
System.config({
14+
packages: {
2715
app: {
28-
format: 'register',
29-
defaultExtension: 'js'
16+
format: 'register',
17+
defaultExtension: 'js'
3018
}
31-
}
32-
});
33-
System.import('app/main')
34-
.then(null, console.error.bind(console));
35-
</script>
36-
</body>
19+
}
20+
});
21+
System.import('app/main').then(null, console.error.bind(console));
22+
</script>
23+
</body>
3724
</html>

package.json

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "angular2-gulp-browserify-boilerplate",
3-
"version": "0.1.1",
3+
"version": "0.1.2",
44
"description": "Angular 2, Express, Gulp, Browserify and SASS/Stylus boilerplate",
55
"scripts": {
66
"lite": "lite-server",
@@ -14,25 +14,30 @@
1414
"author": "Ruslan Kazakov",
1515
"license": "MIT",
1616
"dependencies": {
17-
"express": "^4.13.3",
18-
"angular2": "2.0.0-beta.14",
19-
"systemjs": "0.19.25",
17+
"angular2": "2.0.0-beta.14",
2018
"es6-shim": "^0.35.0",
19+
"express": "^4.13.3",
20+
"locallydb": "0.0.9",
2121
"reflect-metadata": "0.1.2",
2222
"rxjs": "5.0.0-beta.2",
23+
"systemjs": "0.19.25",
2324
"zone.js": "0.6.6"
2425
},
2526
"devDependencies": {
2627
"autoprefixer": "^6.3.5",
27-
"cssnano": "^3.4.0",
28+
"browser-sync": "^2.12.3",
2829
"concurrently": "^2.0.0",
30+
"cssnano": "^3.4.0",
2931
"gulp": "^3.9.0",
32+
"gulp-concat": "^2.6.0",
3033
"gulp-ext-replace": "^0.2.0",
3134
"gulp-imagemin": "^2.4.0",
35+
"gulp-nodemon": "^2.0.6",
3236
"gulp-postcss": "^6.0.1",
37+
"gulp-rename": "^1.2.2",
3338
"gulp-sourcemaps": "^1.6.0",
3439
"gulp-typescript": "^2.10.0",
35-
"gulp-uglify": "^1.5.1",
40+
"gulp-uglify": "^1.5.3",
3641
"lite-server": "^2.1.0",
3742
"postcss": "^5.0.13",
3843
"postcss-scss": "^0.1.3",

server.js

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
var express = require('express');
2+
var path = require('path');
3+
var app = express();
4+
var router = require('./server/router');
5+
6+
app.get('/', function (req, res) {
7+
res.sendFile(path.join(__dirname + '/index.html'));
8+
});
9+
10+
app.use(router);
11+
12+
app.use('/app', express.static(__dirname + '/app'));
13+
14+
// app.set('views', __dirname + '/server/views');
15+
// app.set('view engine', 'ejs');
16+
// app.engine('html', require('ejs').renderFile);
17+
18+
var server = app.listen(3001, function () {
19+
var host = server.address().address;
20+
var port = server.address().port;
21+
});

server/router.js

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
var locallydb = require('locallydb');
2+
var db = new locallydb('db');
3+
var collection = db.collection('testcollection');
4+
5+
var router = module.exports = require('express').Router();
6+
7+
router
8+
.get('/', function (req, res, next) {
9+
res.writeHead(200);
10+
res.end();
11+
})
12+
.get('/healthcheck', function (req, res, next) {
13+
res.writeHead(200);
14+
res.end();
15+
});

0 commit comments

Comments
 (0)