Skip to content

Commit

Permalink
adds bin folder
Browse files Browse the repository at this point in the history
  • Loading branch information
smohadjer committed Dec 19, 2021
0 parents commit 78c3d47
Show file tree
Hide file tree
Showing 11 changed files with 418 additions and 0 deletions.
4 changes: 4 additions & 0 deletions bin/clean.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
var rimraf = require('rimraf');

rimraf.sync('dist');
rimraf.sync('public');
50 changes: 50 additions & 0 deletions bin/compile.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
const fs = require('fs');
const path = require('path');
const handlebars = require('handlebars');
const partials = require('./partials.js');
const files = fs.readdirSync('./app');
const targetFiles = files.filter(function(file) {
return path.extname(file).toLowerCase() === '.hbs';
});
const registerContent = function(filename) {
const path = 'app/content/' + filename + '.html';
handlebars.registerPartial(
'content',
fs.readFileSync(path, 'utf8')
)
}

const compileFile = function(pathToFile) {
console.log('file: ', pathToFile);
const extension = path.extname(pathToFile);
const filename = path.basename(pathToFile, extension);
console.log('filename: ', filename);
const template = fs.readFileSync(pathToFile, 'utf8');
registerContent(filename);
const compiled = handlebars.compile(template);
const html = compiled({});
const dir = 'public';
if (!fs.existsSync(dir)){
fs.mkdirSync(dir);
}
const target = dir + '/' + filename + '.html';
fs.writeFile(target, html, function(err) {
if(err) {
return console.log(err);
}
console.log(target + ' was saved');
});
};

partials.registerPartials();

targetFiles.forEach(function(file) {
compileFile('app/' + file);
});

module.exports = compileFile;





55 changes: 55 additions & 0 deletions bin/copyPublic.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
var fse = require("fs-extra");
var path = require('path');
var content = fse.readFileSync("projectConfig.json");
var jsonContent = JSON.parse(content);

function copyDependencies(type) {
if (jsonContent.dependencies[type]) {
jsonContent.dependencies[type].forEach(function(source) {
var filename = path.basename(source);
var destination = `public/resources/${type}/${filename}`;

fse.copy(source, destination, function (err) {
if (err){
console.log('An error occured while copying the folder.')
return console.error(err)
}
});
});
}
}

function copyResources(folder) {
const srcDir = './app/resources/' + folder;
const destDir = './public/resources/' + folder;

//https://stackoverflow.com/questions/13786160/copy-folder-recursively-in-node-js
try {
fse.copySync(srcDir, destDir, {overwrite: true});
console.log(srcDir, 'was copied to ', destDir);
}
catch (err) {
console.error('error: ', err);
}
}

function copyAssets() {
const srcDir = './app/content/assets';
const destDir = './public/assets/';

//https://stackoverflow.com/questions/13786160/copy-folder-recursively-in-node-js
try {
fse.copySync(srcDir, destDir, {overwrite: true});
console.log(srcDir, 'was copied to ', destDir);
}
catch (err) {
console.error('error: ', err);
}
}

copyDependencies('css');
copyDependencies('js');
copyResources('img');
copyResources('fonts');
copyResources('js');
copyAssets();
52 changes: 52 additions & 0 deletions bin/copydist.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
var fs = require("fs-extra");
var concat = require("concat");

fs.mkdirSync('dist/resources/css', { recursive: true }, (err) => {
if (err) throw err;
});

fs.mkdirSync('dist/resources/js', { recursive: true }, (err) => {
if (err) throw err;
});

concat([
'public/resources/js/handlebars.runtime.js',
'public/resources/js/handlebars.templates.js'],
'dist/resources/js/bundle.js');
concat('public/resources/css', 'dist/resources/css/styles.min.css');

copyFile('app/apple-touch-icon.png', 'dist/apple-touch-icon.png');

copyFolder('public/assets', 'dist/assets');
copyFolder('public/resources/img', 'dist/resources/img');
copyFolder('public/resources/fonts', 'dist/resources/fonts');

function copyFile(source, destination) {
fs.pathExists(source, (err, exists) => {
if (err) {
console.log(err, source) // => null
}

if (exists) {
fs.copy(source, destination, function (err) {
if (err){
console.log('An error occured while copying the folder.')
return console.error(err)
}
console.log(source, ' copy completed!')
});
}
});
}

function copyFolder(source, destination) {
if (fs.existsSync(source)) {
fs.copy(source, destination, function (err) {
if (err){
console.log('An error occured while copying the folder.')
return console.error(err)
}
console.log(source, ' copy completed!')
});
}
}
11 changes: 11 additions & 0 deletions bin/hbs.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
const fs = require('fs');
const exec = require('child_process').exec;
const shell_command = 'handlebars --extension hbs --namespace myApp.templates app/resources/hbs -f public/resources/js/handlebars.templates.js';

fs.readdir('app/resources/hbs/', (err, files) => {
if (files) {
exec(shell_command);
} else {
console.log('No handlebars templates found.');
}
});
27 changes: 27 additions & 0 deletions bin/partials.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
const fs = require('fs');
const handlebars = require('handlebars');

module.exports = {
registerPartials: () => {
handlebars.registerPartial(
'header',
fs.readFileSync('app/content/shared/header.html', 'utf8')
);
handlebars.registerPartial(
'footer',
fs.readFileSync('app/content/shared/footer.html', 'utf8')
);
handlebars.registerPartial(
'meta',
fs.readFileSync('app/content/shared/meta.html', 'utf8')
);
handlebars.registerPartial(
'styles',
fs.readFileSync('app/includes/styles.html', 'utf8')
);
handlebars.registerPartial(
'scripts',
fs.readFileSync('app/includes/scripts.html', 'utf8')
);
}
}
18 changes: 18 additions & 0 deletions bin/sassTocss.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
var fs = require('fs');
var sass = require('sass');

sass.render({
file: './app/resources/css/styles.scss',
includePaths: ['./app/resources/css/modules/']
}, function(err, result) {
if(!err) {
// No errors during the compilation, write this result on the disk
fs.writeFile('public/resources/css/styles.css', result.css, function(err){
if(!err){
//file written on disk
}
});
} else {
console.log(err);
}
});
33 changes: 33 additions & 0 deletions bin/useref.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
var fs = require('fs');
var path = require('path');
var useref = require('useref');

function djoin(p) {
console.log('__dirname:', __dirname);
return path.normalize(path.join(__dirname, p));
}

function fread(f) {
return fs.readFileSync(f, { encoding: 'utf-8'});
}

function writeToFile(result, file) {
fs.writeFile('dist/' + file, result[0], function(err) {
if(err) {
return console.log(err);
}
console.log(file + ' was saved!');
});
}

var files = fs.readdirSync('./public');
var targetFiles = files.filter(function(file) {
return path.extname(file).toLowerCase() === '.html';
});

targetFiles.forEach(function(file) {
var html = fread(djoin('../public/' + file));
var result = useref(html);
//console.log(result[1].js);
writeToFile(result, file);
});
100 changes: 100 additions & 0 deletions bin/watch-content.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,100 @@
const compilesFile = require('./compile.js');
const fse = require("fs-extra");
const chokidar = require('chokidar');
const partials = require('./partials.js');
const src = 'app/content';
const dest = 'public';
const path = require('path');


// using cwd option so instead of path we get filename
const watcher = chokidar.watch('.', {
ignored: /(^|[\/\\])\../, // ignore dotfiles
persistent: true,
ignoreInitial: true,
cwd: src
});

const compileHbs = (filepath) => {
const extension = path.extname(filepath);
const file = 'app/' + path.basename(filepath, extension) + '.hbs';
compilesFile(file);
}

const compileAllFiles = () => {
fse.readdirSync(src).forEach(file => {
const path = src + '/' + file;
if (fse.statSync(path).isFile()) {
compileHbs(path);
}
});
}

// Something to use when events are received.
const log = console.log.bind(console);
// Add event listeners.
watcher
.on('add', filepath => {
log(`File ${filepath} has been added`);
if (filepath.indexOf('assets') >= 0) {
console.log('Copying asset to public folder...');
copyFile(filepath);
} else {
console.log('Compiling page...');
compileHbs(filepath);
}
})
.on('change', filepath => {
log(`File ${filepath} has been changed`);
if (filepath.indexOf('assets') >= 0) {
console.log('Copying asset to public folder...');
copyFile(filepath);
} else {
if (filepath.indexOf('shared') >= 0) {
console.log('Compiling all pages...');
partials.registerPartials();
compileAllFiles();
} else {
console.log('Compiling ', filepath);
compileHbs(filepath);
}
}
})
.on('unlink', filepath => {
log(`File ${filepath} has been removed`);
//fse.unlink(dest + filepath);
});

/* copies assets from content folder to public folder */
function copyFile(filepath) {
console.log(filepath);
const source = 'app/content/' + filepath;
const destination = 'public/' + filepath;

fse.copy(source, destination, function (err) {
if (err){
console.log('An error occured while copying the folder.')
return console.error(err)
}
console.log(source, ' copy completed!')
});

/*
fse.pathExists(source, (err, exists) => {
console.log(err);
console.log(exists);
console.log(filepath);
if (exists) {
console.log(source, destination);
fse.copy(source, destination, function (err) {
if (err){
console.log('An error occured while copying the folder.')
return console.error(err)
}
console.log(source, ' copy completed!')
});
}
});
*/
}
24 changes: 24 additions & 0 deletions bin/watch-css.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
var fs = require('fs');
var sass = require('sass');

fs.watch('./app/resources/css', { recursive: true }, (eventType, filename) => {
if (filename) {
// Prints: <Buffer ...>
sass.render({
file: './app/resources/css/styles.scss',
includePaths: ['./app/resources/css/modules/']
}, function(err, result) {
if(!err) {
// No errors during the compilation, write this result on the disk
fs.writeFile('public/resources/css/styles.css', result.css, function(err){
if(!err){
//file written on disk
}
});
} else {
console.log(err);
}
});
console.log('watching ', filename);
}
});
Loading

0 comments on commit 78c3d47

Please sign in to comment.