Front-end development stack used at Actum to create beautiful things.
🛠| Preprocessing | Linting | Postprocessing |
---|---|---|---|
CSS | SASS | Stylelint | PostCSS (autoprefixer, cssnano) Sourcemaps |
JavaScript | Babel | ESLint | Browserify Watchify Uglify Sourcemaps |
SVG | SVGStore svgmin |
||
Images | imagemin | ||
Favicons | gulp-real-favicon | ||
HTML | Nunjucks | Prettify | |
Dev server | browser-sync | ||
API mocking | json-server |
<symbol>
elementstodo
npm install -g gulp
Clone the repository: git clone https://github.com/actum/gulp-dev-stack ./PROJECT_NAME
Install package dependencies with npm install
under the root of your PROJECT_NAME
folder.
Configure the project. Do not forget to change the respective keys in package.json
according to your project’s info, and setup a unique listening port in ./gulp/config.js
.
Following a certain file and folder structure keeps development, maintenance and debugging processes much easier when switching from project to project based on the same development stack.
Build (production) folder generated and changed automatically by various Gulp tasks. Contains production-ready compiled CSS (dist/css
), JavaScript (dist/js
), graphics (dist/gfx
) and HTML. Should not be edited manually.
tasks/
The list of Gulp tasks. Each task is responsible for handling automation for different file types (i.e. styles.js
compiles SCSS to CSS, and serve.js
launches a local server for development). Do not edit unless you know what you are doing.
config.js
Global Gulp configuration, consisting of declaring environment and folder/file paths. While we would not recommend to change the project structure references, you may and should customize such keys as PORT
or TITLE
, which are unique for each project.
environment.js
Determines current working environment (DEVELOPMENT
or PRODUCTION
).
Development folder. This is where all the action happens.
dist/PAGE.html
.A brief summary of dev stack root files purpose.
Babel configuration. Primarily used to specify presets for plugins for JavaScript compiling.
A definition of coding styles for different code editors and IDEs. You can specify what configuration (indent size, charset, trim whitespaces, ...) should be used for what files.
Eslint configuration. Primarily used to specify and configure rules of JavaScript linting.
Path-specific settings used by Git. Settings that Git applies to certain subdirectories or subsets of files - for example EOL (End Of Line) setting.
Contains patterns that are matched against file names in your Git repository to determine whether or not they should be ignored (commited).
Stylelint configuration. Primarily used to specify and configure rules of CSS (SCSS) linting.
CircleCI configuration. How to set up and test your project.
Project workflow guideline. How to create branches, write commits or assign pull requests.
Gulp configuration and definition of automation tasks.
Open source license of Git repository. It enables others to freely use, change and distribute the project in the repository.
NPM manifest. Automatically generated with change of node_modules
or package.json
if working with NPM. Holds information about which versions of each dependency were installed in order to get consistent installs across machines.
NPM packages specifics. It lists the packages (with their versions) your project depends on.
It's me!
Yarn manifest. Automatically generated with change of node_modules
or package.json
if working with Yarn. Holds information about which versions of each dependency were installed in order to get consistent installs across machines.
​
To start your development process, run gulp --dev
in the terminal. This will prepare the project for the work and launch watch tasks to update the files on-the-fly as you work. A --dev
flag will notify the automatization tasks to add or omit certain steps (i.e. your JavaScript files are not minified while in development mode).
If you want to start also an API server, run gulp --dev --api
. This server will run on different port which is defined in gulp/config.js
as API_PORT
.
If you want to start Mokker, run gulp server
. This server will run on different port which is defined in gulp/config.js
as MOCK_PORT
.
If you want to revert back to a fresh state without built files, run
gulp clean
It will remove the dist/
folder and all built targets in src/
.
To prepare production-ready files, run gulp
and grab built assets from dist
folder.
devstack-update
)git remote add devstack git@github.com:actum/gulp-dev-stack.git
)git fetch devstack
)devstack-update
(use --allow-unrelated-histories
if necessary)master
to devstack-update
devstack-update
branchdevstack-update
to your master
Support for extension Debugger for Chrome is enabled! Big thanks to roblourens
Common errors | |
---|---|
Error: "Local gulp not found in ..." when running gulp . |
|
Solution: Make sure you run npm install after cloning the repository. |
When you have encountered a bug, or have a useful suggestion how to improve this development stack, do not hesitate to Create a new issue.