In questa guida verrà spiegato come settare un nuovo progetto HTLM/Javascript con l’ausilio di NodeJS e del compilatore WebPack. L’utilizzo di tale compilatore nasce soprattutto per versioni di linguaggio JS (Javascript) più avanzate che, con l’ausilio di altri pacchetti (es. Babel), una volta compilati sono compatibili con la maggioranza dei browser. Prima di iniziare è fondamentale aver istallato le ultime versioni di NodeJS e Npm (Node Package Manager).
Questo progetto è stato sviluppato con sistema operativo Ubuntu Server 18.04.3

Installazione di NodeJS e Npm

Come sottolineato in prefazione è fondamentale installare ultima versione di NodeJS e di Npm. Per farlo sarà sufficiente seguire questi comandi:

sudo apt-get install curl
curl -sL https://deb.nodesource.com/setup_12.x | sudo bash -
sudo apt-get update
sudo apt-get install nodejs
sudo apt-get install npm

Creazione dalla cartella di progetto e inizializzazione della stessa con NodeJS

Per creare e inizializzare la cartella di progetto eseguire questi comandi:
– creazione della cartella con mkdir
– posizionarsi con il promt all’interno di essa
– inizializzare il progetto con Node Package Manager.
Verranno richiesti alcuni parametri, basterà usare quelli descritti nella figura successiva. Nel caso si desiderasse automatizzare il tutto basterà aggiungere “-y” al comando “npm init

mkdir /opt/myProject
cd /opt/myProject/
npm init

Risposte alle domande durante la creazione di package.json come da figura

Installazione pacchetti di compilazione

Per poter compilare il progetto che si andrà a creare si dovrà procedere all’installazione dei seguenti pacchetti:
Webpack
Webpack-Cli
Webpack-dev-server
Html-webpack-plugin

npm install --save-dev webpack
npm install --save-dev webpack-cli
npm install --save-dev webpack-dev-server 
npm install --save-dev html-webpack-plugin

Creazione di webpack.config.js

Per poter compilare il progetto si dovrà far capire a Webpack dove si trovano i files Html e Javascript usati per lo sviluppo del progetto stesso. Quindi sarà fondamentale creare il file javascript di configurazione di WebPack, e al suo interno definiremo:
– entry point: ovvero dove si trovano i files javascript di progetto
– output: ovvero directory e nome del file javascript compilato e minificato che sarà creato dal compilatore
– plugins HtmlWebpackPlugin: ovvero descriveremo al compilatore dove trovare i files HTML, dove salvarli una volta compilati e alcuni attributi dei files (es. Titolo).
Per creare il file usare questo comando

 sudo nano webpack.config.js

al suo interno inserire il seguente codice:

const path = require('path');
const HtmlWebpackPlugin = require('html-webpack-plugin');

module.exports = {
  entry: {
        'filea': './src/js/index.js', // dove si trova il file index.js
        //'fileb': './src/js/fileB.js' // dove si trova il fileB.js
  },
  output: {
    path: path.resolve(__dirname, 'dist'),
    filename: 'js/[name].[chunkhash].js' // file dove verranno raggruppati tutti i js
  },
  devServer: {
    contentBase: './dist' // cartella da cui legge
  },
  plugins: [
    new HtmlWebpackPlugin({
       title: 'my Project ES6',
       cache: true,
       inject: true, // inserisce nel corpo i link per css e js
       filename: 'index.html', // nome del file principale
       template: './src/index.html', // locazione del file principale compilato
       chunks: ["filea"] // inietta solo il file js che ha questo nome
    }) //,
    // eventuale altra pagina web
    //new HtmlWebpackPlugin({
    //   filename: 'paginaB.html', // nome del file principale
    //   template: './src/paginaB.html', // locazione del file principale compilato
    //   chunks: ["fileb"] // inietta solo il file js che ha questo nome
    //})
  ]
}

Modifica del package.json

Per creare i comandi che serviranno per lo sviluppo e la compilazione del progetto si dovrà modificare il file package.json. Si andranno ad aggiungere allo stesso i comandi “run” e “build“.
Aprire con l’editor nano il file package.json con il seguente comando:

sudo nano package.json

Dovrà essere simile a questo:

Modificare il file secondo il codice descritto di seguito:

{
  "name": "myproject",
  "version": "1.0.0",
  "description": "Progetto ES6 compilato WebPack",
  "main": "index.js",
  "scripts": {
        "dev": "webpack --mode development",
        "build": "webpack --mode production",
        "start": "webpack-dev-server --mode development --open"
  },
  "author": "Omar",
  "license": "ISC",
  "devDependencies": {
    "html-webpack-plugin": "^4.3.0",
    "webpack": "^4.43.0",
    "webpack-cli": "^3.3.12",
    "webpack-dev-server": "^3.11.0"
  }
}

Nel file package.json sono stati inseriti 3 nuovi comandi (NON lanciare i comandi perchè restituiranno errore in quanto manca il progetto):
npm run dev : serve a raggruppare i file javascript
npm run build : crea la compilazione, minificando tutti i javascript
npm run start : avvia un webserver dedicando al nostro sito internet una porta

Creazione del progetto HTML e Javascript

Questo articolo non ha come scopo insegnare a programmare in Javascritp, ma solo la preparazione del sistema per permettere la compilazione di progetti più consistenti; Pertanto il progetto che si andrà a scrivere è minimale e conterrà un file Javascript che eseguirà un calcolo matematico semplice e una pagina html che ne visualizzerà il risultato.
Quindi si andranno a creare due cartelle (“src” e “src/js”) dove si verranno inseriti i files html e js, utilizzando i seguenti comandi:

sudo mkdir /opt/myProject/src
sudo mkdir /opt/myProject/src/js
sudo nano /opt/myProject/src/index.html

All’interno del file index.html, si andrà ad inserire il seguente codice:

<html>
    <head>
        <meta charset="utf-8"/>
        <title><%= htmlWebpackPlugin.options.title %></title>
    </head>

    <body>
        <h1>Il risultato è: <div id="resp"></div></h1>
    </body>
</html>

Il prossimo passo sarà quello di creare il file JS (index.js), utilizzando il seguente comando:

sudo nano /opt/myProject/src/js/index.js

All’interno del file si andrà ad inserire il seguente codice:

function num(){
    let a =1;
    const b = 2;
    return a+b;
}

document.getElementById("resp").innerHTML= num();

Compilazione del progetto

Una volta completato il progetto si dovrà passare alla compilazione dello stesso; Per fare questo sarà sufficiente lanciare i seguenti comandi:

cd /opt/myProject
npm run build

Si dovrà ottenere un risultato simile a quello raffigurato nella seguente immagine:

Come si può notare dalla figura, a seguito della compilazione è stata creata una cartella “dist” dove al suo interno si trovano “index.html” e “js/filea.7dc58c86711651e0ae2a.js” ovvero i files creati dal compilatore webpack.