Skip to content
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
1 change: 1 addition & 0 deletions bedrock.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ module.exports = {
},
styleguide: {
url: '/styleguide',
overrideStyleguideTemplates: false,
search: true,
colors: './content/scss/_colors.scss',
categoryOrder: [
Expand Down
16 changes: 16 additions & 0 deletions core/cli/bedrock
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
#! /usr/bin/env node

'use strict';

const program = require('commander');

const cliVersion = require('../../package.json').version;

program
.version(cliVersion, '-v, --version');

program
.command('build', 'Build a static site');

program
.parse(process.argv);
17 changes: 17 additions & 0 deletions core/cli/bedrock-build
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
#! /usr/bin/env node

'use strict';

const program = require('commander');
const gulp = require('gulp');

const defineGulpTasks = require('../tasks/gulpfile');

program
.action(() => {
defineGulpTasks();
gulp.series('build')();
});

program
.parse(process.argv);
6 changes: 6 additions & 0 deletions core/discovery/default-config.js
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,12 @@ const defaultConfig = {
*/
styleguide: {
url: '/styleguide',
/**
* overrideStyleguideTemplates [boolean]
* Make Bedrock use the current directory's styleguide
* templates instead of Bedrock's core styleguide templates.
*/
overrideStyleguideTemplates: false,
/**
* search [boolean]
* Feature flag for search feature
Expand Down
22 changes: 14 additions & 8 deletions core/paths.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,15 @@ const config = require('./discovery/config');

const contentPath = 'content/';
const corePath = 'core/';
const absoluteCorePath = __dirname;
const compiledPath = 'tmp/';
const distPath = 'dist/';

const styleguideTemplatesPath =
config.styleguide.overrideStyleguideTemplates
? path.join(contentPath, 'templates/_styleguide')
: path.join(absoluteCorePath, 'templates/styleguide');

module.exports = {
content: {
path: contentPath,
Expand Down Expand Up @@ -60,20 +66,20 @@ module.exports = {
core: {
path: corePath,
js: {
entryFile: path.join(corePath, 'js/index.js'),
allFiles: path.join(corePath, 'js/**/*.js')
entryFile: path.join(absoluteCorePath, 'js/index.js'),
allFiles: path.join(absoluteCorePath, 'js/**/*.js')
},
scss: {
all: path.join(corePath, 'scss/**/*.scss'),
prism: path.join(corePath, 'scss/prism-styleguide.scss'),
prototype: path.join(corePath, 'scss/prototype.scss')
prism: path.join(absoluteCorePath, 'scss/prism-styleguide.scss'),
prototype: path.join(absoluteCorePath, 'scss/prototype.scss')
},
templates: {
styleguide: {
index: path.join(corePath, 'templates/styleguide/index.pug'),
doc: path.join(corePath, 'templates/styleguide/doc.pug'),
colors: path.join(corePath, 'templates/styleguide/colors.pug'),
componentGroup: path.join(corePath, 'templates/styleguide/component-group.pug')
index: path.join(styleguideTemplatesPath, 'index.pug'),
doc: path.join(styleguideTemplatesPath, 'doc.pug'),
colors: path.join(styleguideTemplatesPath, 'colors.pug'),
componentGroup: path.join(styleguideTemplatesPath, 'component-group.pug')
}
}
},
Expand Down
68 changes: 68 additions & 0 deletions core/tasks/gulpfile.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
'use strict';

const gulp = require('gulp');
const runSequence = require('run-sequence');

const browserSync = require('./browser-sync');
const bundle = require('./bundle');
const templates = require('./templates');
const copy = require('./copy');
const watch = require('./watch');
const server = require('./server');
const iconFont = require('./icon-font');

// Configs
const config = require('../discovery/config');

// Sass is used to render core templates so is needed, even if you use postcss in your content part
const sass = require('./sass');
const postcss = require('./postcss');

// Optional tasks: Purge CSS and minify CSS
const purge = require('./purge');
const minifyCSS = require('./minify-css');

// Execute this task instead of optional tasks
const dummy = require('./dummy');

function defineGulpTasks() {
gulp.task('templates:clean', templates.clean);
gulp.task('sass', sass);
gulp.task('postcss', postcss);
gulp.task('minifyCSS', minifyCSS);
gulp.task('purgeCSS', purge);
gulp.task('server', server);
gulp.task('dummy', dummy);
gulp.task('copy:images', copy.images);
gulp.task('copy:fonts', copy.fonts);
gulp.task('copy:favicon', copy.favicon);
gulp.task('copy:resources', copy.resources);
gulp.task('copy:scripts', copy.scripts);
gulp.task('copy:compiledToDist', copy.compiledToDist);
gulp.task('bundle:clientBundle', bundle.clientBundle);
gulp.task('bundle:prototypeBundle', bundle.prototypeBundle);
gulp.task('icon-font', iconFont);

gulp.task('templates:compile:content', templates.compile.content);
gulp.task('templates:compile:styleguide', templates.compile.styleguide);
gulp.task('templates:compile:docs', templates.compile.docs);

gulp.task('templates:compile', config.styleguide ?
gulp.parallel('templates:compile:content', 'templates:compile:styleguide', 'templates:compile:docs') :
gulp.series('templates:compile:content')
);

gulp.task('watch', watch);
gulp.task('copy', gulp.parallel('copy:images', 'copy:fonts', 'copy:resources', 'copy:scripts', 'copy:favicon'));
gulp.task('compile-all', gulp.parallel('templates:clean', 'icon-font', 'bundle:clientBundle', 'bundle:prototypeBundle', 'sass', 'postcss', 'copy'));

gulp.task('build', gulp.series('compile-all', 'templates:compile', 'copy:compiledToDist', config.css.purge ? 'purgeCSS' : 'dummy', config.css.minify ? 'minifyCSS': 'dummy'), function (done) {
console.log('------------\n');
console.log('Build finished. Compiled files can be found in the dist/ directory.');
process.exit(0);
});

gulp.task('default', gulp.parallel('server', 'compile-all', 'watch', browserSync));

}
module.exports = defineGulpTasks;
6 changes: 3 additions & 3 deletions core/tasks/templates.js
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ module.exports = {

const tasks = Object.keys(defaultLocals.components.byGroup).map(componentGroup => {
return gulp.src([
path.join(bedrockDir, paths.core.templates.styleguide.componentGroup)
paths.core.templates.styleguide.componentGroup
])
.pipe(data(function (file) {
return Object.assign({}, getDefaultLocals(), {
Expand All @@ -63,7 +63,7 @@ module.exports = {

tasks.push(
gulp.src([
path.join(bedrockDir, paths.core.templates.styleguide.index)
paths.core.templates.styleguide.index
])
.pipe(data(function (file) {
return Object.assign({}, getDefaultLocals(), {
Expand All @@ -86,7 +86,7 @@ module.exports = {

const tasks = defaultLocals.docs.allDocs.map(doc => {
return gulp.src(
path.join(bedrockDir, paths.core.templates.styleguide.doc)
paths.core.templates.styleguide.doc
)
.pipe(data(function (file) {
return Object.assign({}, getDefaultLocals(), {
Expand Down
64 changes: 2 additions & 62 deletions gulpfile.js
Original file line number Diff line number Diff line change
@@ -1,64 +1,4 @@
'use strict';

const gulp = require('gulp');
const runSequence = require('run-sequence');

const browserSync = require('./core/tasks/browser-sync');
const bundle = require('./core/tasks/bundle');
const templates = require('./core/tasks/templates');
const copy = require('./core/tasks/copy');
const watch = require('./core/tasks/watch');
const server = require('./core/tasks/server');
const iconFont = require('./core/tasks/icon-font');

// Configs
const config = require('./core/discovery/config');

// Sass is used to render core templates so is needed, even if you use postcss in your content part
const sass = require('./core/tasks/sass');
const postcss = require('./core/tasks/postcss');

// Optional tasks: Purge CSS and minify CSS
const purge = require('./core/tasks/purge');
const minifyCSS = require('./core/tasks/minify-css');

// Execute this task instead of optional tasks
const dummy = require('./core/tasks/dummy');

gulp.task('templates:clean', templates.clean);
gulp.task('sass', sass);
gulp.task('postcss', postcss);
gulp.task('minifyCSS', minifyCSS);
gulp.task('purgeCSS', purge);
gulp.task('server', server);
gulp.task('dummy', dummy);
gulp.task('copy:images', copy.images);
gulp.task('copy:fonts', copy.fonts);
gulp.task('copy:favicon', copy.favicon);
gulp.task('copy:resources', copy.resources);
gulp.task('copy:scripts', copy.scripts);
gulp.task('copy:compiledToDist', copy.compiledToDist);
gulp.task('bundle:clientBundle', bundle.clientBundle);
gulp.task('bundle:prototypeBundle', bundle.prototypeBundle);
gulp.task('icon-font', iconFont);

gulp.task('templates:compile:content', templates.compile.content);
gulp.task('templates:compile:styleguide', templates.compile.styleguide);
gulp.task('templates:compile:docs', templates.compile.docs);

gulp.task('templates:compile', config.styleguide ?
gulp.parallel('templates:compile:content', 'templates:compile:styleguide', 'templates:compile:docs') :
gulp.series('templates:compile:content')
);

gulp.task('watch', watch);
gulp.task('copy', gulp.parallel('copy:images', 'copy:fonts', 'copy:resources', 'copy:scripts', 'copy:favicon'));
gulp.task('compile-all', gulp.parallel('templates:clean', 'icon-font', 'bundle:clientBundle', 'bundle:prototypeBundle', 'sass', 'postcss', 'copy'));

gulp.task('build', gulp.series('compile-all', 'templates:compile', 'copy:compiledToDist', config.css.purge ? 'purgeCSS' : 'dummy', config.css.minify ? 'minifyCSS': 'dummy'), function (done) {
console.log('------------\n');
console.log('Build finished. Compiled files can be found in the dist/ directory.');
process.exit(0);
});

gulp.task('default', gulp.parallel('server', 'compile-all', 'watch', browserSync));
const defineGulpTasks = require('./core/tasks/gulpfile');
defineGulpTasks();
8 changes: 6 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,9 @@
"build": "gulp build",
"build-prod": "NODE_ENV=production gulp build"
},
"bin": {
"bedrock": "./core/cli/bedrock"
},
"repository": {
"type": "git",
"url": "git+https://github.com/usebedrock/bedrock.git"
Expand All @@ -21,6 +24,8 @@
},
"homepage": "https://bedrockapp.org",
"devDependencies": {
},
"dependencies": {
"@babel/core": "^7.14.6",
"@babel/preset-env": "^7.14.5",
"autoprefixer": "^9.8.6",
Expand Down Expand Up @@ -81,6 +86,5 @@
"through2": "^4.0.2",
"vinyl-buffer": "^1.0.1",
"vinyl-source-stream": "^2.0.0"
},
"dependencies": {}
}
}