JavaScript

The theme’s assets/js/main.min.js script is built from several vendor, jQuery plugins, and other scripts found in assets/js/.

minimal mistakes
├── assets
|  ├── js
|  |  ├── plugins
|  |  |   ├── gumshoe.js                     # simple scrollspy
|  |  |   ├── jquery.ba-throttle-debounce.js # rate-limit functions
|  |  |   ├── jquery.fitvids.js              # fluid width video embeds
|  |  |   ├── jquery.greedy-navigation.js    # priority plus navigation
|  |  |   ├── jquery.magnific-popup.js       # responsive lightbox
|  |  |   └── smooth-scroll.js               # make same-page links scroll smoothly
|  |  ├── vendor
|  |  |   └── jquery
|  |  |       └── jquery-3.5.1.js
|  |  ├── _main.js                           # jQuery plugin settings and other scripts
|  |  └── main.min.js                        # concatenated and minified theme script

Customizing

To modify or add your own scripts include them in assets/js/_main.js and then rebuild using npm run build:js. See below for more details.

If you add additional scripts to assets/js/plugins/ and would like them concatenated with the others, be sure to update the uglify script in package.json. Same goes for scripts that you remove.

You can also add scripts to the <head> or closing </body> elements by adding paths to following arrays in _config.yml.

Example:

head_scripts:
  - https://code.jquery.com/jquery-3.3.1.min.js
  - /assets/js/your-custom-head-script.js
footer_scripts:
  - /assets/js/your-custom-footer-script.js
after_footer_scripts:
  - /assets/js/custom-script-loads-after-footer.js

Note: If you assign footer_scripts the theme’s /assets/js/main.min.js file will be deactivated. This script includes jQuery and various other plugins that you’ll need to find replacements for and include separately.


Build process

In an effort to reduce dependencies a set of npm scripts are used to build main.min.js instead of task runners like Gulp or Grunt. If those tools are more your style then by all means use them instead :wink:.

To get started:

  1. Install Node.js.
  2. cd to the root of your project.
  3. Install all of the dependencies by running npm install.

Note: If you upgraded from a previous version of the theme be sure you copied over package.json prior to running npm install.

If all goes well, running npm run build:js will compress/concatenate _main.js and all plugin scripts into main.min.js.

Debugging

The minified JavaScript is harder to debug in the browser than the raw source. To stop the minification and bundle all the JavaScript as-is — open up package.json and edit the value scripts.uglify from:

  "scripts": {
    "uglify": "uglifyjs [...] -c -m -o assets/js/main.min.js",

To the following:

  "scripts": {
    "uglify": "cat [...] > assets/js/main.min.js",

Updated: