Skip to content

Commit 613bd46

Browse files
authored
Merge pull request #119 from modularcode/v1-dev
V1 dev
2 parents 489f304 + 7434af2 commit 613bd46

17 files changed

+4629
-4866
lines changed

Diff for: README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ git clone https://github.com/modularcode/modular-admin-html.git
3232
```
3333
### 2. Build the project
3434

35-
The cloned/downloaded repository doesn't contain prebuilt version of the project and you need to build it. You need to have [NodeJs](https://nodejs.org/en/) (v4+) with npm (v2.15+) installed.
35+
The cloned/downloaded repository doesn't contain prebuilt version of the project and you need to build it. You need to have [NodeJs](https://nodejs.org/en/) (v8+) with npm (v3+) installed.
3636

3737

3838
Install npm dependencies

Diff for: build/gulpfile.js

+51-53
Original file line numberDiff line numberDiff line change
@@ -1,89 +1,87 @@
1-
var glob = require('glob');
2-
var path = require('path');
31

42
var gulp = require('gulp');
53
var plugins = require('gulp-load-plugins')();
64

7-
var utils = require('./utils/utils');
8-
95
/********************************************
106
* Configs And Paths
117
*********************************************/
128

139
var config = require('../config/');
1410
var paths = config.paths;
1511

16-
1712
/********************************************
1813
* Load Build Tasks
1914
*********************************************/
2015

21-
var buildTasks = utils.loadTasks(gulp, plugins, paths);
16+
// Dynamic Tasks with Gulp 4
17+
// https://cobwwweb.com/dynamic-tasks-gulp-4
18+
// With Gulp 4, it's not so simple.
19+
20+
//var buildTasks = utils.loadTasks(gulp, plugins, paths);
21+
//gulp.task('build', buildTasks);
22+
23+
const app_assets = require('./tasks/app-assets').task(gulp, plugins, paths);
24+
const app_pages = require('./tasks/app-pages').task(gulp, plugins, paths);
25+
const app_scripts = require('./tasks/app-scripts').task(gulp, plugins, paths);
26+
const app_styles = require('./tasks/app-styles').task(gulp, plugins, paths);
27+
const app_themes = require('./tasks/app-themes').task(gulp, plugins, paths);
2228

23-
gulp.task('build', buildTasks);
29+
const vendor_assets = require('./tasks/vendor-assets').task(gulp, plugins, paths);
30+
const vendor_scripts = require('./tasks/vendor-scripts').task(gulp, plugins, paths);
31+
const vendor_styles = require('./tasks/vendor-styles').task(gulp, plugins, paths);
32+
33+
const clean = (done) => {
34+
// Error: Cannot delete files/directories outside the current
35+
// working directory. Can be overridden with the `force` option.
36+
return require('del')([config.destDir], {force: true});
37+
};
38+
39+
const build = gulp.parallel(
40+
gulp.parallel(app_assets, app_scripts, app_pages, gulp.series(app_styles, app_themes)),
41+
gulp.parallel(vendor_assets, vendor_scripts, vendor_styles)
42+
);
2443

2544
/*********************************************
2645
* Other Tasks
2746
**********************************************/
2847

2948
// Local server pointing on build folder
30-
gulp.task('connect', function() {
31-
plugins.connect.server({
32-
root: config.destDir,
33-
port: config.port || 3333,
34-
livereload: true
35-
});
36-
});
37-
38-
39-
// Rerun the task when a file changes
40-
gulp.task('watch', function() {
41-
// When template changes recompile .html pages
42-
plugins.watch(paths.app.templates, function() {
43-
gulp.start('app-pages');
44-
});
45-
49+
const connect = () => {
50+
return plugins.connect.server({
51+
root: config.destDir,
52+
port: config.port || 3333,
53+
livereload: true
54+
});
55+
};
56+
57+
const watch = (done) => {
58+
// When template changes recompile .html pages
59+
gulp.watch(paths.app.templates, app_pages);
4660
// When context file changes recompile .html pages
47-
plugins.watch(config.srcDir + "/**/.context.js", function() {
48-
gulp.start('app-pages');
49-
});
50-
61+
gulp.watch(config.srcDir + "/**/.context.js", app_pages);
5162
// When script changes recompile scripts
52-
plugins.watch(paths.app.scripts, function() {
53-
gulp.start('app-scripts');
54-
});
55-
63+
gulp.watch(paths.app.scripts, app_scripts);
5664
// When style changes recompile styles
57-
plugins.watch(paths.app.styles, function() {
58-
gulp.start('app-styles');
59-
});
60-
65+
gulp.watch(paths.app.styles, app_styles);
6166
// When theme changes recompile themes
62-
plugins.watch(paths.app.themes, function() {
63-
gulp.start('app-themes');
64-
});
65-
});
67+
gulp.watch(paths.app.themes, app_themes);
68+
69+
done();
70+
};
6671

6772
// Builds and deploys to github pages
68-
gulp.task('deploy', ['build'], function() {
69-
return gulp.src('../dist/**/*')
73+
const deploy = () => gulp.series(build, () =>
74+
gulp.src('../dist/**/*')
7075
.pipe(plugins.ghPages({
7176
cacheDir: '../.deploy'
72-
}));
73-
});
74-
77+
}))
78+
);
7579

80+
module.exports.deploy = deploy;
7681

7782
/********************************************
7883
* Main Tasks
7984
*********************************************/
8085

81-
82-
// // Run this task for development
83-
gulp.task('develop', [
84-
'build',
85-
'watch',
86-
'connect'
87-
]);
88-
89-
gulp.task('default', ['develop']);
86+
// Run this task for development
87+
module.exports.default = gulp.series(clean, build, gulp.parallel(watch, connect));

Diff for: build/tasks/app-assets.js

+5-3
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
var config = require('../../config');
22

33
module.exports.task = function(gulp, plugins, paths) {
4-
gulp.src(paths.app.assets)
5-
.pipe(gulp.dest(config.destDir + "/assets"))
6-
.pipe(plugins.connect.reload());
4+
return function app_assets() {
5+
return gulp.src(paths.app.assets)
6+
.pipe(gulp.dest(config.destDir + "/assets"))
7+
.pipe(plugins.connect.reload());
8+
};
79
};

Diff for: build/tasks/app-pages.js

+46-44
Original file line numberDiff line numberDiff line change
@@ -16,57 +16,59 @@ var partials = {};
1616

1717
module.exports.task = function(gulp, plugins, paths) {
1818

19-
20-
// Register handlebars engine helpers and partials
21-
handlebarsRegistrar(handlebars, {
22-
helpers: paths.app.helpers,
23-
partials: paths.app.templates,
24-
parsePartialName: function (partial) {
25-
26-
// Save in partials vinyl registry
27-
partials[partial.shortPath] = new File({
28-
cwd: partial.cwd,
29-
path: partial.path,
30-
base: path.basename(partial.path),
31-
contents: fs.readFileSync(partial.path)
32-
});
33-
34-
return partial.shortPath;
35-
},
36-
bustCache: true,
37-
});
19+
return function app_pages() {
20+
21+
// Register handlebars engine helpers and partials
22+
handlebarsRegistrar(handlebars, {
23+
helpers: paths.app.helpers,
24+
partials: paths.app.templates,
25+
parsePartialName: function (partial) {
26+
27+
// Save in partials vinyl registry
28+
partials[partial.shortPath] = new File({
29+
cwd: partial.cwd,
30+
path: partial.path,
31+
base: path.basename(partial.path),
32+
contents: fs.readFileSync(partial.path)
33+
});
34+
35+
return partial.shortPath;
36+
},
37+
bustCache: true,
38+
});
3839

3940

40-
gulp.src(paths.app.pages)
41-
// Render pages
42-
.pipe(through.obj(function (file, enc, cb) {
43-
file.contents = new Buffer(renderTemplate(file));
41+
return gulp.src(paths.app.pages)
42+
// Render pages
43+
.pipe(through.obj(function (file, enc, cb) {
44+
file.contents = Buffer.from(renderTemplate(file));
4445

45-
this.push(file);
46-
cb();
47-
}))
48-
// Handle errors
49-
.on('error', plugins.util.log)
46+
this.push(file);
47+
cb();
48+
}))
49+
// Handle errors
50+
.on('error', plugins.util.log)
5051

51-
// Rename .page.hbs to .html
52-
.pipe(plugins.rename(function (path) {
53-
path.basename = path.basename.replace("-page", "");
54-
path.extname = ".html"
55-
}))
52+
// Rename .page.hbs to .html
53+
.pipe(plugins.rename(function (path) {
54+
path.basename = path.basename.replace("-page", "");
55+
path.extname = ".html"
56+
}))
5657

57-
// Flatten structure
58-
.pipe(plugins.flatten())
58+
// Flatten structure
59+
.pipe(plugins.flatten())
5960

60-
// pretify html structure
61-
.pipe(plugins.prettify({
62-
indent_size: 4
63-
}))
61+
// pretify html structure
62+
.pipe(plugins.prettify({
63+
indent_size: 4
64+
}))
6465

65-
// Output
66-
.pipe(gulp.dest(config.destDir))
66+
// Output
67+
.pipe(gulp.dest(config.destDir))
6768

68-
//Live-Reload
69-
.pipe(plugins.connect.reload());
69+
//Live-Reload
70+
.pipe(plugins.connect.reload());
71+
};
7072

7173
};
7274

@@ -145,7 +147,7 @@ function setFrontMatter(file) {
145147
var content = frontMatter(file.contents.toString('utf8'));
146148

147149
// var res = new Buffer(content.body);
148-
file.contents = new Buffer(content.body);
150+
file.contents = Buffer.from(content.body);
149151
file.frontMatter = content.attributes;
150152

151153
return file;

Diff for: build/tasks/app-scripts.js

+7-4
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,11 @@
11
var config = require('../../config/');
22

33
module.exports.task = function(gulp, plugins, paths) {
4-
gulp.src(paths.app.scripts)
5-
.pipe(plugins.concat('app.js'))
6-
.pipe(gulp.dest(config.destDir + '/js'))
7-
.pipe(plugins.connect.reload());
4+
return function app_scripts() {
5+
return gulp.src(paths.app.scripts)
6+
.pipe(plugins.concat('app.js'))
7+
.pipe(plugins.uglify())
8+
.pipe(gulp.dest(config.destDir + '/js'))
9+
.pipe(plugins.connect.reload());
10+
};
811
};

Diff for: build/tasks/app-styles.js

+18-15
Original file line numberDiff line numberDiff line change
@@ -2,19 +2,22 @@ var path = require('path');
22
var config = require('../../config/');
33

44
module.exports.task = function(gulp, plugins, paths) {
5-
6-
gulp.src(paths.app.styles)
7-
.pipe(plugins.concat('app.scss'))
8-
.pipe(
9-
plugins.sass({
10-
includePaths: [
11-
path.resolve( config.srcDir ),
12-
path.resolve( config.npmDir ),
13-
]
14-
})
15-
.on('error', plugins.sass.logError)
16-
)
17-
.pipe(plugins.autoprefixer())
18-
.pipe(gulp.dest(config.destDir + '/css'))
19-
.pipe(plugins.connect.reload()).on( 'error', plugins.sass.logError );
5+
return function app_styles() {
6+
return gulp.src(paths.app.styles)
7+
.pipe(plugins.concat('app.scss'))
8+
.pipe(
9+
plugins.sass({
10+
includePaths: [
11+
path.resolve( config.srcDir ),
12+
path.resolve( config.npmDir ),
13+
]
14+
})
15+
.on('error', plugins.sass.logError)
16+
)
17+
.pipe(plugins.autoprefixer())
18+
// TODO minify
19+
.pipe(gulp.dest(config.destDir + '/css'))
20+
.pipe(plugins.connect.reload())
21+
.on( 'error', plugins.sass.logError );
22+
};
2023
};

Diff for: build/tasks/app-themes.js

+25-23
Original file line numberDiff line numberDiff line change
@@ -4,32 +4,34 @@ var glob = require('glob');
44

55
module.exports.task = function(gulp, plugins, paths) {
66

7-
// For each theme file
8-
glob.sync(paths.app.themes).forEach(function(filePath) {
7+
return function app_themes(done) {
8+
// For each theme file
9+
glob.sync(paths.app.themes).forEach(function(filePath) {
910

10-
// Prepend file to styles glob
11-
var src = [].concat(paths.app.styles);
11+
// Prepend file to styles glob
12+
var src = [].concat(paths.app.styles);
1213
src.unshift(filePath);
1314

14-
// Theme name
15-
var name = "app-" + path.basename(filePath, '.js').replace("-theme", "");
16-
17-
gulp.src(src)
18-
.pipe(plugins.concat(name))
19-
.pipe(
20-
plugins.sass({
21-
includePaths: [
22-
path.resolve( config.srcDir ),
23-
path.resolve( config.npmDir ),
24-
]
25-
})
26-
.on('error', plugins.sass.logError)
27-
)
28-
.pipe(plugins.autoprefixer())
29-
.pipe(gulp.dest(config.destDir + '/css'))
30-
.pipe(plugins.connect.reload());
31-
32-
});
15+
// Theme name
16+
var name = "app-" + path.basename(filePath, '.js').replace("-theme", "");
17+
18+
gulp.src(src)
19+
.pipe(plugins.concat(name))
20+
.pipe(
21+
plugins.sass({
22+
includePaths: [
23+
path.resolve( config.srcDir ),
24+
path.resolve( config.npmDir ),
25+
]
26+
})
27+
.on('error', plugins.sass.logError)
28+
)
29+
.pipe(plugins.autoprefixer())
30+
.pipe(gulp.dest(config.destDir + '/css'))
31+
.pipe(plugins.connect.reload());
32+
});
33+
done();
34+
};
3335

3436
};
3537

0 commit comments

Comments
 (0)