Foundation with Sass: Difference between revisions
No edit summary |
|||
| Line 16: | Line 16: | ||
=== Installing the Foundation CLI === | === Installing the Foundation CLI === | ||
<syntaxhighlight lang=" | <syntaxhighlight lang="sh"> | ||
$ npm install --global foundation-cli | $ npm install --global foundation-cli | ||
</syntaxhighlight> | </syntaxhighlight> | ||
| Line 32: | Line 32: | ||
These properties can be set with arguments to `foundation new`: | These properties can be set with arguments to `foundation new`: | ||
<syntaxhighlight lang=" | <syntaxhighlight lang="sh"> | ||
$ foundation new --framework sites --template basic --directory [app_name] | $ foundation new --framework sites --template basic --directory [app_name] | ||
</syntaxhighlight> | </syntaxhighlight> | ||
| Line 40: | Line 40: | ||
First uninstall the existing Foundation installation | First uninstall the existing Foundation installation | ||
<syntaxhighlight lang=" | <syntaxhighlight lang="sh"> | ||
$ npm uninstall foundation | $ npm uninstall foundation | ||
</syntaxhighlight> | </syntaxhighlight> | ||
| Line 49: | Line 49: | ||
* Install `foundation-cli` and any necessary Foundation components (e.g. `foundation-sites`, `motion-ui`): | * Install `foundation-cli` and any necessary Foundation components (e.g. `foundation-sites`, `motion-ui`): | ||
<syntaxhighlight leng=" | <syntaxhighlight leng="sh"> | ||
$ sudo npm install -g foundation-cli | $ sudo npm install -g foundation-cli | ||
$ npm install foundation-sites --save | $ npm install foundation-sites --save | ||
| Line 69: | Line 69: | ||
The gulp task for compiling Sass is named `sass`, so from the foundation project's root directory: | The gulp task for compiling Sass is named `sass`, so from the foundation project's root directory: | ||
<syntaxhighlight lang=" | <syntaxhighlight lang="sh"> | ||
$ gulp sass | $ gulp sass | ||
</syntaxhighlight> | </syntaxhighlight> | ||
| Line 117: | Line 117: | ||
To use the Foundation assets in a Jinja template: | To use the Foundation assets in a Jinja template: | ||
<syntaxhighlight lang=" | <syntaxhighlight lang="html"> | ||
<link type="text/css" rel="stylesheet" href="{{ static("css/app.css") }}" /> | <link type="text/css" rel="stylesheet" href="{{ static("css/app.css") }}" /> | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Revision as of 20:59, 20 July 2018
CDN
CDNs for stubbing out projects.
//cdn.foundation5.zurb.com/foundation.css//cdn.foundation5.zurb.com/foundation.js
or
//cdnjs.cloudflare.com/ajax/libs/foundation/5.5.0/js/foundation.min.js//cdnjs.cloudflare.com/ajax/libs/foundation/5.5.0/css/foundation.min.css
Installing Foundation with Sass
Installing the Foundation CLI
$ npm install --global foundation-cli
Creating a new project
The foundation new command will create a foundation directory. It prompts for the following project properties:
- Framework - Foundation for Sites
- Template
- "Basic" includes Sass and a flat directory structure
- "ZURB" includes JavaScript processing, Handlebars templating, and image compression
- Directory/Project Name is relative to the current directory. So a directory with the project name will be created in the current directory.
These properties can be set with arguments to foundation new:
$ foundation new --framework sites --template basic --directory [app_name]
Upgrading from earlier versions
First uninstall the existing Foundation installation
$ npm uninstall foundation
Copying a project to another workstation
- Fetch the project from GitHub.
- Install
foundation-cliand any necessary Foundation components (e.g.foundation-sites,motion-ui):
$ sudo npm install -g foundation-cli $ npm install foundation-sites --save $ npm install motion-ui --save
The last two lines add Foundation components in the current directory under the node_modules directory, where they need to be located to hook up with the sassPaths values in gulpfile.js.
At this point if everything is present it should be possible to do gulp sass or gulp build.
Compiling Sass
Foundation 6
Foundation 6 uses gulp to compile.
Creating a new Foundation project creates a gulpfile.js in the project directory. The default action is to watch for changes in .scss and .js files, so simply running gulp will spawn a process that will compile the project.
The gulp task for compiling Sass is named sass, so from the foundation project's root directory:
$ gulp sass
Configuring a file watcher in PhpStorm/PyCharm
Project Settings > Tools > File Watchers > SCSS
- File Type: SCSS
- Scope: Project Files
- Program:
[/path/to/gulp]e.g./usr/local/bin/gulp - Arguments: sass (name of gulp task to run, from
gulpfile.js) - Working Directory: $FileDir$
- Environment variables: n/a
- Output paths to refresh: $FileNameWithoutExtension$.css (Not sure if this is correct)
Compiling Compass
I couldn't figure out a way to use config.rb to use the compass compile command with the Foundation for Sites 6 libraries. It's necessary to use the gulp task.
These Compass mixins emulate the compass mixins. Download them and place the lib directory in the project's scss/ directory. Then e.g. include with @include "compass-mixins\compass\animation";
Foundation 5
Foundation 5 offers a collection of Sass files that they suggest customizing. [1]
- Variables controlling appearance are located in
_settings.scss - The documentation recommends placing custom styles in
app.scss - Foundation components can be included or excluded by commenting them out in
app.scss
Question: how well does this arrangement accommodate upgrades? Do these two files get overwritten in the course of an upgrade? How to preserve changes?
Integrating Foundation with Django
- Install Foundation in a directory outside the Django project.
- Compile Foundation assets into a directory named
static/.
The name isn't important, but all compiled files should be placed in a directory separate from source files so that it can be collected into the Django project's static files cleanly. - Point Django's static files directories at the compiled Foundation resources:
# myapp/settings.py
# ...
STATICFILES_DIRS = [
os.path.join(DJANGO_ROOT, '..', 'grappelli', 'static'),
os.path.join(BASE_DIR, '..', 'nrose-foundation', 'static'),
]
To use the Foundation assets in a Jinja template:
<link type="text/css" rel="stylesheet" href="{{ static("css/app.css") }}" />
Prerequisites
- Git
- Node.js
- Ruby 1.9+
- Bower
Links
Reference
- Getting Started with Foundation and Sass - Foundation Documentation
Notes
- ↑ How to Use Foundation Sass Foundation documentation (version 5)