You will need to install Node.js before working on this project.
- Clone the repository using
git clone https://github.com/cipscis/portfolio.git. - Run
npm installto install development dependencies. - Create a
.envfile. - Run
npm startto run the local server and watch CSS and JS files for changes.
This project creates five npm tasks:
-
npm run serverruns a Node.js server on the port specified in the.envfile, using Express. -
npm run buildcompiles CSS files using gulp-sass, then compiles TypeScript and bundles JavaScript using Webpack. -
npm run watchfirst runs thebuildtask, then watches the relevant directories and reruns thebuildtask if it sees any changes. -
npm startruns both theserverandwatchtasks simultaneously. -
npm testlints any TypeScript.
Usually, you will just want to run npm start.
The .env file contains the following environment variables:
PROJECT_NAME(string)
If present, used by Express to set up redirects for emulating GitHub Pages.
MODE(string 'development' | 'production')
Used by Webpack to determine what optimisations to use and how to generate sourcemaps.
PORT(int)
Used by Express to determine which port to use when running a local Node.js server.
An example .env file you can use for development is:
PROJECT_NAME = "portfolio"
MODE = "development"
PORT = "8080"
This file is intended to differ from environment to environment, so it is ignored by Git.
None.
These dependencies are used when working on the project locally.
-
Node.js: Runtime environment
-
npm: Package manager
-
Gulp: Task runner
-
TypeScript: JavaScript extension for static type checking
-
- gulp-sass: Using the
sasscompiler with Gulp
- gulp-sass: Using the
-
Webpack: For JavaScript dependency management, used with Gulp
-
ts-loader: For compiling TypeScript using Webpack
-
resolve-typescript-plugin: For using ES Module syntax with Webpack's
ts-loader
-
-
Express: Running a Node.js server, accessed at
http://localhost:<PORT> -
Concurrently: Running server and development build tasks concurrently
-
eslint: Linting TypeScript files
-
@typescript-eslint/eslint-plugin: Allows
eslintto lint TypeScript -
@typescript-eslint/parser: Allows
eslintto parse TypeScript
-
These dependencies are used for deploying the project to GitHub Pages.
-
checkout: Used to check out the repository to a workspace so it can be built
-
Deploy to GitHub Pages: Used to deploy the project to GitHub pages once it has been built