Supercharging your HTML5 site with NPM, adding Build Process with UglifyJS, and Rimraf and deploying to multiple providers.

Hello hello! This is a the first part of a three part series were we will be exploring various web technologies by supercharging a simple HTML5 website. We will cover from creating a build process to deploying using GitHub Actions (second part) and other providers like AWS amplify.

In this first part tutorial we will be adding NPM to a standalone HTML5 site, adding a local server with an awesome handy NPM package with live refresh so it auto reloads with any code changes and adding a build process (totally optional but is fun to only have 1 html file with one css and js minified.

So this is the project I’m going to be working on, as you can see it’s just standard HTML with CSS and JavaScript with good oldies like JQuery and other libraries.

Step 1: Setting up NPM: We’ll start by initializing NPM in our project. Open your terminal and navigate to your project’s root directory. Run the following command to create a package.json file with default settings:

npm init -y

This will create a package.json with default values, feel free to change the name, version and description to match your project. Also keep in mind to change the entry point to index.html instead of index.js since this is an HTML5 APP

Step 2: Install a local server package Next, you’ll need a package to run a local server for testing. One popular choice is live-server. Install it by running the following command:

npm install live-server --save-dev

This will install live-server as a development dependency and save it in the package.json file.

This creates a script named “start” that will run the live-server package.

To start the local server In your terminal or command prompt, run the following command to start the local server:

npm start

This will create a local server and start your site! And it listen for changes on the code and automatically reload it. Very simple and useful


Step 3: Lets minimize! Installing Required Packages:
Next up we will be installing this two awesome packages:

UglifyJS is a JavaScript minification tool that helps optimize your JavaScript code by reducing its size and removing unnecessary characters like whitespace, comments, and unused code. It also performs various code transformations to improve performance and reduce the overall file size. Minifying your JavaScript files with UglifyJS can lead to faster loading times and improved website performance.

Rimraf is a command-line utility used for deleting files and directories. It provides a convenient way to clean up your build directory or any other directories/files you want to remove. Rimraf ensures that the deletion is thorough and recursive, handling files and directories with different permissions, and it works across different platforms.


To utilize UglifyJS and Rimraf, we need to install them as development dependencies. Run the following command to install them:

 npm install uglify-js rimraf --save-dev

Step 4: Configuring Build Script: Open your package.json file and add the following script section:

 "scripts": {
  "build": "npm run build:js && npm run build:css && npm run edit:index",   "build:js": "uglifyjs js/*.js -o dist/minified.js",
  "build:css": "cleancss css/*.css -o dist/minified.css",  "edit:index": "node build-scripts/edit-index.js",
  "clean": "rimraf dist"
}

This scripts will get all css and js files, minify them and copy the result to the dist folder.

Step 5: Creating the Edit Index Script: Create a new file named edit-index.js inside a build-scripts directory. Add the following code to the file:

 const fs = require('fs');
const cheerio = require('cheerio');

const indexPath = 'index.html';
const cssPath = 'minified.css';
const jsPath = 'minified.js';
const distIndexPath = 'dist/index.html';

fs.readFile(indexPath, 'utf8', (err, data) => {
  if (err) {
    console.error('Error reading index.html:', err);
    return;
  }

  const $ = cheerio.load(data);
  
  // Remove existing CSS includes
  $('link[rel="stylesheet"]').remove();
  
  // Remove existing JS includes
  $('script[src]').remove();
  
  // Add minified CSS
  $('<link rel="stylesheet" href="' + cssPath + '">').appendTo('head');
  
  // Add minified JS
  $('<script src="' + jsPath + '"></script>').appendTo('body');

  // Save modified HTML to dist folder
  fs.writeFile(distIndexPath, $.html(), (err) => {
    if (err) {
      console.error('Error writing modified index.html:', err);
      return;
    }
    console.log('Modified index.html successfully saved in dist folder');
  });
});

This code snippet is used to modify an HTML file (index.html) by removing existing CSS and JavaScript includes and adding references to minified CSS and JavaScript files. It utilizes the fs module to read and write files, and the cheerio library to parse and manipulate the HTML document.


Step 6: Add copy images step: We will be adding a new script: build:images, which uses the cp command to copy the images from your source directory to the output directory

  "build:images": "cp -R images/ dist/images/"
  

Our final package.json will look like this:

"scripts": {
  "build": "npm run build:js && npm run build:css && npm run edit:index && npm run build:images",   "build:js": "uglifyjs js/*.js -o dist/minified.js",
  "build:css": "cleancss css/*.css -o dist/minified.css",
  "build:images": "cp -R images/ dist/images/",
  "edit:index": "node build-scripts/edit-index.js",
  "clean": "rimraf dist"
}

Step 7: Building the Project: Now, we can run the build command to generate the minified and optimized files. Open your terminal and run the following command:

npm run build

And that’s it! You should have 1 html, css and js file with the images copied on your dist folder!

Step 8: Cleaning the Dist Folder: To ensure a clean build, we can add a step to delete the contents of the dist folder before each build. Add the following script to your package.json file:

scripts": {
  ...
  "clean": "rimraf dist"
}

Conclusion: By leveraging NPM, UglifyJS, and Rimraf, we’ve streamlined our front-end build process. We automated the minification and bundling of JavaScript and CSS files, edited the index.html file to include the minified files, and cleaned the build directory for a fresh start. Implementing these steps will improve your development workflow and optimize your website’s performance.

Adaptive Vs. Responsive Layouts And Optimal Text Readability

Responsive web design offers us a way forward, finally allowing us to design for the ebb and flow of things. There are many variations of passages of Lorem Ipsum available,  but the majority have suffered alteration in some form, by injected humour, or randomised words which don’t look even slightly.

Today i want to share with you a responsive slider plugin that adapts itself to various devices from desktop to mobile and with fancy css3 animations where available.

Him fowl divided. Lesser which fruitful image, first seas have the, seas grass image don’t. Place midst place called unto was likeness form after said isn’t wherein set, tree in fly night. One green. Created waters. Created saying created also you’ll Divide.

Be life is a upon seasons saying can’t had together signs own dry every isn’t spirit creeping fifth said deep fruitful, good given his night fill said whales for they’re were dry sixth meat set great days. Second so dominion whales, moving fourth.

Green, fowl gathering first, firmament. In i. Be. Dry green said first seasons. Called above.

Responsive Design, Goods and Bads

Lorem ipsum dolor sit amet, test link adipiscing elit. Nullam dignissim convallis est. Quisque aliquam. Donec faucibus. Nunc iaculis suscipit dui. Nam sit amet sem. Aliquam libero nisi, imperdiet at, tincidunt nec, gravida vehicula, nisl. Praesent mattis, massa quis luctus fermentum, turpis mi volutpat justo, eu volutpat enim diam eget metus. Maecenas ornare tortor. Donec sed tellus eget sapien fringilla nonummy. Mauris a ante. Suspendisse quam sem, consequat at, commodo vitae, feugiat in, nunc. Morbi imperdiet augue quis tellus.

This is a responsive template for showing what you think to everyone in the world, in any device. It’s that simple!

Lorem ipsum dolor sit amet, test link adipiscing elit. Nullam dignissim convallis est. Quisque aliquam. Donec faucibus. Nunc iaculis suscipit dui. Nam sit amet sem. Aliquam libero nisi, imperdiet at, tincidunt nec, gravida vehicula, nisl. Praesent mattis, massa quis luctus fermentum, turpis mi volutpat justo, eu volutpat enim diam eget metus. Maecenas ornare tortor. Donec sed tellus eget sapien fringilla nonummy. Mauris a ante. Suspendisse quam sem, consequat at, commodo vitae, feugiat in, nunc. Morbi imperdiet augue quis tellus.

This is a responsive template for showing what you think to everyone in the world, in any device. It’s that simple!

Lorem ipsum dolor sit amet, emphasis consectetuer adipiscing elit. Nullam dignissim convallis est. Quisque aliquam. Donec faucibus. Nunc iaculis suscipit dui. Nam sit amet sem. Aliquam libero nisi, imperdiet at, tincidunt nec, gravida vehicula, nisl. Praesent mattis, massa quis luctus fermentum, turpis mi volutpat justo, eu volutpat enim diam eget metus. Maecenas ornare tortor. Donec sed tellus eget sapien fringilla nonummy. Mauris a ante. Suspendisse quam sem, consequat at, commodo vitae, feugiat in, nunc. Morbi imperdiet augue quis tellus.

Responsive web design offers us a way forward, finally allowing us to “design for the ebb and flow of things.”

Ethan Marcotte

Web Design

Lorem ipsum dolor sit amet, test link adipiscing elit. Nullam dignissim convallis est. Quisque aliquam. Donec faucibus. Nunc iaculis suscipit dui. Nam sit amet sem. Aliquam libero nisi, imperdiet at, tincidunt nec, gravida vehicula, nisl. Praesent mattis, massa quis luctus fermentum, turpis mi volutpat justo, eu volutpat enim diam eget metus. Maecenas ornare tortor. Donec sed tellus eget sapien fringilla nonummy. Mauris a ante. Suspendisse quam sem, consequat at, commodo vitae, feugiat in, nunc. Morbi imperdiet augue quis tellus.

Lorem ipsum dolor sit amet, emphasis consectetuer adipiscing elit. Nullam dignissim convallis est. Quisque aliquam. Donec faucibus. Nunc iaculis suscipit dui. Nam sit amet sem. Aliquam libero nisi, imperdiet at, tincidunt nec, gravida vehicula, nisl. Praesent mattis, massa quis luctus fermentum, turpis mi volutpat justo, eu volutpat enim diam eget metus. Maecenas ornare tortor. Donec sed tellus eget sapien fringilla nonummy. Mauris a ante. Suspendisse quam sem, consequat at, commodo vitae, feugiat in, nunc. Morbi imperdiet augue quis tellus.

UI DESIGN

Lorem ipsum dolor sit amet, test link adipiscing elit. Nullam dignissim convallis est. Quisque aliquam. Donec faucibus. Nunc iaculis suscipit dui. Nam sit amet sem. Aliquam libero nisi, imperdiet at, tincidunt nec, gravida vehicula, nisl. Praesent mattis, massa quis luctus fermentum, turpis mi volutpat justo, eu volutpat enim diam eget metus. Maecenas ornare tortor. Donec sed tellus eget sapien fringilla nonummy. Mauris a ante. Suspendisse quam sem, consequat at, commodo vitae, feugiat in, nunc. Morbi imperdiet augue quis tellus.

Lorem ipsum dolor sit amet, emphasis consectetuer adipiscing elit. Nullam dignissim convallis est. Quisque aliquam. Donec faucibus. Nunc iaculis suscipit dui. Nam sit amet sem. Aliquam libero nisi, imperdiet at, tincidunt nec, gravida vehicula, nisl. Praesent mattis, massa quis luctus fermentum, turpis mi volutpat justo, eu volutpat enim diam eget metus. Maecenas ornare tortor. Donec sed tellus eget sapien fringilla nonummy. Mauris a ante. Suspendisse quam sem, consequat at, commodo vitae, feugiat in, nunc. Morbi imperdiet augue quis tellus.

Adaptive Design

Lorem ipsum dolor sit amet, test link adipiscing elit. Nullam dignissim convallis est. Quisque aliquam. Donec faucibus. Nunc iaculis suscipit dui. Nam sit amet sem. Aliquam libero nisi, imperdiet at, tincidunt nec, gravida vehicula, nisl. Praesent mattis, massa quis luctus fermentum, turpis mi volutpat justo, eu volutpat enim diam eget metus. Maecenas ornare tortor. Donec sed tellus eget sapien fringilla nonummy. Mauris a ante. Suspendisse quam sem, consequat at, commodo vitae, feugiat in, nunc. Morbi imperdiet augue quis tellus.

blog-02

This is some text that will wrap around the image that sits on the right side of the text that you are writing about the leaf that is there. That is, if you are writing about leaves in the first place and you want to write about this specific leaf. Lorem ipsum dolor sit amet, emphasis consectetuer adipiscing elit. Nullam dignissim convallis est. Quisque aliquam. Donec faucibus. Nunc iaculis suscipit dui. Nam sit amet sem. Aliquam libero nisi, imperdiet at, tincidunt nec, gravida vehicula, nisl. Praesent mattis, massa quis luctus fermentum, turpis mi volutpat justo, eu volutpat enim diam eget metus. Maecenas ornare tortor. Donec sed tellus eget sapien fringilla nonummy. Mauris a ante. Suspendisse quam sem, consequat at, commodo vitae, feugiat in, nunc. Morbi imperdiet augue quis tellus. Donec faucibus. Nunc iaculis suscipit dui. Nam sit amet sem. Aliquam libero nisi, imperdiet at, tincidunt nec, gravida vehicula, nisl. Praesent mattis, massa quis luctus fermentum, turpis mi volutpat justo, eu volutpat enim diam eget metus. Maecenas ornare tortor. Donec sed tellus eget sapien fringilla nonummy. Mauris a ante. Suspendisse quam sem, consequat at, commodo vitae, feugiat in, nunc. Morbi imperdiet augue quis tellus.

HTML

<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<meta name="description" content="impressiVcard - impressiVCard Responsive HTML5 VCard Template">
<meta name="keywords" content="impressivcard, vcard, html5, ,portfolio">
<meta name="author" content="Pixelwars">

<title>ImpressivCard</title>

CSS

/* TYPOGRAPHY */
h1 { font-size: 2.20em; margin: 0.8em 0 0.4em 0; }
h2 { font-size: 1.60em; margin: 1.4em 0 0.8em 0; }
h3 { font-size: 1.20em; margin: 1.0em 0; }
h4 { font-size: 0.90em; margin: 1.0em 0; }
h5 { font-size: 0.90em; margin: 1.0em 0 .8em 0; }
h6 { font-size: 0.85em; margin: 1.0em 0 .8em 0; }

Hope you enjoy this little project.

Web Design is 95% Typography

Responsive web design offers us a way forward, finally allowing us to design for the ebb and flow of things. There are many variations of passages of Lorem Ipsum available, but the majority have suffered alteration in some form, by injected humour, or randomised words which don’t look even slightly.

Nulla elementum risus quis risus viverra eget venenatis mi adipiscing. Morbi massa tellus, elementum quis laoreet et, vehicula in ante. Vestibulum ut leo facilisis libero placerat viverra. Donec non nunc quam. Phasellus congue, nulla ac dignissim pharetra, dolor lectus ultricies risus, a aliquet diam turpis pellentesque sapien. Sed at elit lorem, sit amet scelerisque tellus. Nunc nec suscipit tellus. Maecenas faucibus tristique eros eu feugiat. Sed tincidunt pulvinar velit, quis facilisis elit ultrices sit amet. Praesent id est suscipit diam rhoncus ornare et sit amet ante.

Praesent mattis luctus elit, et varius risus facilisis vel. Proin sed felis velit. Duis adipiscing neque vitae erat vulputate vel tincidunt odio facilisis. Nullam sapien diam, ultrices quis hendrerit id, ornare id velit. Curabitur in placerat nibh. Sed ut mi vel nisl feugiat varius a a mauris. Vivamus eros mi, eleifend ut interdum eget, pulvinar et neque. Phasellus facilisis eros pharetra ligula venenatis adipiscing. Aliquam pulvinar turpis sed diam lacinia nec volutpat ipsum tempus.

Nulla facilisi. Curabitur pretium ante id felis tempor non venenatis eros pretium. Aliquam blandit rutrum eros non pretium. Fusce tellus nibh, fringilla sit amet suscipit ut, fringilla et nisi. Suspendisse quis velit dolor. Phasellus nec tellus et magna pulvinar sodales eu eget felis. Praesent venenatis elit eget erat venenatis a faucibus nibh luctus. Etiam dictum tincidunt scelerisque. Fusce diam sapien, sagittis nec lobortis in, posuere id quam. Maecenas egestas orci sed quam tincidunt ut lobortis ligula venenatis. Mauris et consectetur augue. Cras est neque, sollicitudin eget porta ut, dictum molestie lacus. Proin non risus id risus cursus vehicula in vel justo. Mauris quis pretium diam.

Maecenas mollis lacus a leo posuere interdum. Nunc pellentesque fermentum molestie. Aliquam eget est est. Vestibulum vitae tortor eu dolor gravida suscipit. Proin consectetur ligula tempus mauris facilisis elementum. Duis scelerisque orci eu mi placerat non sodales dui ullamcorper. Integer at magna tortor. In malesuada molestie quam eu dictum. Vivamus sed quam non arcu commodo porta a quis dolor. Vivamus euismod augue eget nisi posuere porttitor. Sed lobortis velit eget nisl gravida vel egestas enim varius. Nam et enim commodo leo rutrum dapibus. Aenean varius turpis a nunc hendrerit adipiscing. Integer dignissim elementum ornare. Morbi ut dui nisi. Suspendisse sagittis viverra consequat.

Nulla placerat, leo ac blandit vestibulum, urna nisi blandit quam, sed tincidunt urna mauris in tortor. Proin tempor est ut dui tincidunt eu euismod felis cursus. Morbi sodales libero vel tortor lacinia pellentesque. Cras et dolor leo. Fusce blandit euismod nisl non varius. Aenean turpis diam, lobortis ac iaculis porttitor, adipiscing sit amet turpis. Aliquam erat volutpat. Cras ac lacus vitae justo vestibulum elementum. In sodales lectus ante. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut ut libero orci. Maecenas eu eros ac purus eleifend adipiscing at quis metus. Suspendisse non nisl tempus purus egestas pharetra. Maecenas tempus massa et ipsum venenatis eu venenatis turpis aliquet. Nam fermentum scelerisque porta. Suspendisse eu enim a risus luctus auctor pellentesque vitae magna.

Paper by FiftyThree

Paper is where ideas begin. It’s the easiest and most beautiful way to create on the new iPad. Capture your ideas as sketches, diagrams, illustrations, notes or drawings and instantly share them across the web. Download “Paper by FiftyThree” from the App Store.

Performance Optimization for Websites

Responsive web design offers us a way forward, finally allowing us to design for the ebb and flow of things. There are many variations of passages of Lorem Ipsum available, but the majority have suffered alteration in some form, by injected humour, or randomised words which don’t look even slightly.

Integer lobortis magna ut turpis sagittis ac faucibus neque lobortis. Vivamus vel dapibus metus. Nulla facilisi. Etiam pulvinar mi eu mi vulputate laoreet. Donec ligula neque, lacinia in cursus at, ullamcorper nec augue. Aliquam erat volutpat. Etiam pellentesque fermentum nisi, et adipiscing magna ornare id. Vestibulum molestie suscipit metus varius elementum. Pellentesque laoreet sollicitudin consequat. Proin faucibus enim posuere mi aliquam nec fermentum ante laoreet. Suspendisse lectus nisl, adipiscing ac dignissim eget, volutpat non enim. Nunc eu augue urna, non ornare mauris. Aliquam laoreet tincidunt arcu, vel rhoncus diam blandit at.

In vehicula tempus auctor. Fusce sed lorem ut libero sodales dignissim vitae eget urna. Curabitur quis tempor ante. Cras at aliquet elit. Donec est lacus, interdum nec rhoncus sit amet, mattis sed diam. Fusce imperdiet luctus magna eu pretium. Quisque convallis sagittis pharetra.

Vestibulum eu malesuada felis. Pellentesque id lorem non felis tincidunt aliquet. In lacinia facilisis ipsum non laoreet. Donec ut purus mauris, eget semper lacus. Mauris eu mauris sem, id mollis lacus. Mauris tempor sodales lacinia. Etiam ullamcorper sagittis purus, a facilisis felis elementum id. Nulla facilisi. In hendrerit lorem eget lectus imperdiet sit amet pellentesque mi rutrum. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Praesent elementum, turpis convallis elementum blandit, augue dolor porta sem, volutpat dictum nisl orci id leo. Pellentesque id elit eget nisl vestibulum vehicula sit amet adipiscing felis. Aenean egestas quam nec mi mattis malesuada. Morbi ac neque at ante feugiat porttitor nec sit amet dui.

Sed sed augue tortor. Donec dui nulla, scelerisque et faucibus sit amet, adipiscing sodales mauris. Aliquam quis nisi nec felis fringilla sagittis a non eros. Suspendisse malesuada blandit magna et semper. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam luctus, dolor vel pulvinar placerat, sem arcu aliquam leo, quis vestibulum elit mauris ac elit. Aliquam erat volutpat.