SASS and Zurb Foundation - confusing installation instructions

10,760

Solution 1

When you install the gem, all the proper Foundation files are installed for you in the gem cache. Compass will pull all the F4 SCSS files into your project via the @import directive from foundation.scss.

The project docs in the Github repo show the latest Compass instructions for building your F4 project. https://github.com/zurb/foundation/blob/master/docs/sass.html.erb

It sounds like you are mixing the Standalone instructions into the Compass ones.

If you have run this:

[sudo] gem install compass
cd path/to/where-you-want-your-project
run compass create <project-name> -r zurb-foundation --using foundation

You don't need Github or the Standalone instructions.

The steps below outline the manual steps of building an F4 project. I think you're stuck on STEP 4, so focus on that part.

STEP 1:

Download for easy access these two archives:

Foundation Vanilla:

http://foundation.zurb.com/files/foundation-4.1.6.zip

Foundation Master:

https://github.com/zurb/foundation/archive/master.zip

CD into your www root directory:

STEP 2:

Create this file:

/config.rb

require 'zurb-foundation'
http_path = "/"
css_dir = "css"
sass_dir = "scss"
images_dir = "img"
javascripts_dir = "js"
output_style = :expanded
relative_assets = true
line_comments = true

Switch output_style = :compact or :compressed and line_comments = false for Production (when going live).

STEP 3:

  • Copy/Move index.html from Foundation Vanilla into your root www directory.
  • Edit line 11 and change foundation.css to app.css in the style tag.

STEP 4:

Create this directory and file:

/scss/

  • Create app.scss - This is your site/app stylesheet and we'll import Normalize and F4 in it.

  • Copy this into it:

    // Global Foundation Settings
    // @import "settings";
    
    // Comment out this import if you don't want to use normalize
    @import "normalize";
    
    // Comment out this import if you are customizing you imports below
    @import "foundation";
    
    // Your own SCSS here...
    

If you want to override some F4 SaSS variables you will need the _settings.scss file. For now I would skip this step and leave it commented out until you are more familiar with F4.

STEP 5:

Create this directory (files automatically written here):

/css/

  • app.css - will be written here from /scss/app.scss by Compass. Normalize and all the F4 CSS will be inside it, plus any of your own CSS you've added.

This happens automatically, you don't need to do anything except have the required gems installed and your Compass config file from STEP 2.

STEP 6:

Create this directory and copy/move these files into it:

/js/

  • Copy/Move /js/foundation.min.js from the Foundation Vanilla download here.

  • If you need your own app.js create/place it here and link to it last in your footer.

/js/vendor/

  • Copy/Move /js/vendor/custom.modernizr.js from the Foundation Vanilla download into here.

  • Copy/Move /js/vendor/zepto.js and /js/vendor/jquery.js from the Foundation Vanilla download here.

Later, when you feel more comfortable, you can cherry pick individual Foundation JS files from Foundation Master and concatenate them into a smaller lib here as foundation.min.js.

That should do it.

Check out this file in my www repo, as it shows a working F4 setup: https://github.com/jhauraw/jhaurawachsman.com/blob/master/_layouts/default.html

You can also poke around there for how to integrate Grunt.js for automated build of the SCSS and JS with concatenation and minification: https://github.com/jhauraw/jhaurawachsman.com/blob/master/Gruntfile.js

Solution 2

Without being as adept as @jhauraw, I did notice something else.

I installed FOundation through the Compass app. Being a novice with Compass, I too was looking for the "foundation" folder that would contain all the various Foundation SCSS files. And when I looked at the _settings.scss file that was present, it appeared that everything was commented out. What I know understand (still as a novice towards Compass) is that the "foundation" file lives within a resource library within Compass. When needed, these files are imported when generating the CSS file. The _settings.scss file with all the commented out fields is an override file. So if you remove the comments for a particular variable or mixin, it will override the originals hidden in the Compass library. The compiled CSS seems to contain everything that's needed.

Share:
10,760

Related videos on Youtube

TheMook
Author by

TheMook

IT learner - lots of time served, but always wanting to learn more!

Updated on June 04, 2022

Comments

  • TheMook
    TheMook almost 2 years

    I decided to use the Sass version of Foundation4 as the CSS one is virtually impossible to edit efficiently now.

    I followed the instructions here: http://foundation.zurb.com/docs/sass.html

    These advised me to install the gem (no problem) then install compass then create a project, which I did in wwwroot.

    All good so far. It then goes on to advise me to "download the files from Github (grab the scss/ and js/ directories) and put them into your project directory"

    Now why in the name of a fish on a bicycle would the instructions advise me to do this when the previous step on the command line (compass create -r zurb-foundation --using foundation) creates a folder already in the root directory for my project - albeit named differently - that contain similar if not identical files? There's already a "javascripts" folder with "foundation" and "vendor" subfolders that contain largely the same files - although some are different sizes.

    Am I missing something? The included "index.html" file reference the "javascripts" folder so why am I meant to be including "js" from the github? This is very confusing when you're new to the technology!

    After following the installation instructions I now have "foundation.scss" and "app.scss" files which seem to be largely the same apart from one (app.scss) has lots commented out. Which one am I meant to use?

    It seems to me that the instructions are basically out of date. It appears that I don't need "js" from github but I do need "scss". The contents of this scss folder look like they need to go into the "sass" folder created when the project is made and the "foundation.scss" file can be deleted as "app.scss" is a copy of it.

    I have no idea where the base "app.scss" file is hoping to "@import foundation" from as there is no "foundation" folder created on installation/creation of project. Maybe I'm missing something but it's all very confusing. Could someone please clarify what I need to start with and what I can delete/ignore?

    • Aditya M P
      Aditya M P about 10 years
      I am now known as FishOnABicycle on IRC, my dear man.
    • user2019515
      user2019515
      "in the name of a fish on a bicycle" upvoted for that epic piece of literature
  • klewis
    klewis over 10 years
    Why is this all up to the end-user to configure? One missed step and your done! You will have to back track and try to fix something that requires 10+ steps to setup correctly. It makes no sense why Foundation does not provide a downloadable package with all these folders, files and directions already pre-configured. Such a horrible experience.
  • holdenweb
    holdenweb almost 10 years
  • holdenweb
    holdenweb almost 10 years
    To my mind the most pertinent information of all, and the best answer (even though it came along late). It certainly lit a light-bulb for me.