Added :sass_assets_path for external SASS repositories
Compass is great, but sometimes we need to have common framework code in one (global) location with local overrides in the app. This addition adds built-in support for loading SASS/SCSS files from multiple locations external to the "source" directory and even the Middleman app root. Example usage: # in config.rb set :sass_assets_path, [ "#{root}/assets/sass/", "~/.sass-repo/"] Using symlinks or copying files to the Middleman project can get messy quickly. This fix reduces some of those issues.
This commit is contained in:
parent
6f0f9b00a2
commit
3ea2241155
|
@ -109,6 +109,11 @@ module Middleman
|
||||||
# @return [String]
|
# @return [String]
|
||||||
set :css_dir, "stylesheets"
|
set :css_dir, "stylesheets"
|
||||||
|
|
||||||
|
# Location of SASS/SCSS files external to source directory.
|
||||||
|
# @return [Array]
|
||||||
|
# set :sass_assets_paths, ["#{root}/assets/sass/", "/path/2/external/sass/repository/"]
|
||||||
|
set :sass_assets_paths, []
|
||||||
|
|
||||||
# Location of images within source. Used by HTML helpers and Compass.
|
# Location of images within source. Used by HTML helpers and Compass.
|
||||||
# @return [String]
|
# @return [String]
|
||||||
set :images_dir, "images"
|
set :images_dir, "images"
|
||||||
|
|
11
middleman-more/features/sass-assets-paths.feature
Normal file
11
middleman-more/features/sass-assets-paths.feature
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
Feature: Support SASS assets paths
|
||||||
|
In order to import common shared assets when writing Sass
|
||||||
|
|
||||||
|
Scenario: Importing assets from 'assets/stylesheets/' directory in app root
|
||||||
|
Given the Server is running at "sass-assets-path-app"
|
||||||
|
When I go to "/stylesheets/plain.css"
|
||||||
|
Then I should see "color: green;"
|
||||||
|
Then I should see "/* Works with shared SCSS assets from APPROOT/assets/stylesheets/_shared-asset.scss */"
|
||||||
|
Then I should see "/* Works with shared SASS assets from APPROOT/assets/stylesheets/_shared-asset.sass */"
|
||||||
|
Then I should see "font-size: 18px"
|
||||||
|
Then I should see "/* Works with shared SASS assets from external source directory */"
|
|
@ -0,0 +1 @@
|
||||||
|
/* Works with shared SASS assets from APPROOT/assets/stylesheets/_shared-asset.sass */
|
|
@ -0,0 +1 @@
|
||||||
|
/* Works with shared SCSS assets from APPROOT/assets/stylesheets/_shared-asset.scss */
|
6
middleman-more/fixtures/sass-assets-path-app/config.rb
Normal file
6
middleman-more/fixtures/sass-assets-path-app/config.rb
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
|
||||||
|
set :sass_assets_paths, [
|
||||||
|
"#{root}/assets/stylesheets/",
|
||||||
|
# load from another app within gem source
|
||||||
|
"#{File.dirname(File.dirname(File.dirname(File.dirname(__FILE__))))}/fixtures/preview-app/source/stylesheets/"
|
||||||
|
]
|
|
@ -0,0 +1,16 @@
|
||||||
|
|
||||||
|
red
|
||||||
|
color: green
|
||||||
|
|
||||||
|
/* imports below
|
||||||
|
|
||||||
|
// SCSS with extension
|
||||||
|
@import "_shared-asset.scss"
|
||||||
|
|
||||||
|
// without extension
|
||||||
|
@import "shared-asset"
|
||||||
|
|
||||||
|
// imported from outside of local 'assets/' directory
|
||||||
|
@import "_partial.sass"
|
||||||
|
|
||||||
|
/* Works with shared SASS assets from external source directory */
|
|
@ -23,6 +23,7 @@ module Middleman
|
||||||
config.environment = :development
|
config.environment = :development
|
||||||
config.cache_path = sass_cache_path
|
config.cache_path = sass_cache_path
|
||||||
config.sass_dir = css_dir
|
config.sass_dir = css_dir
|
||||||
|
config.additional_import_paths = sass_assets_paths
|
||||||
config.css_dir = css_dir
|
config.css_dir = css_dir
|
||||||
config.javascripts_dir = js_dir
|
config.javascripts_dir = js_dir
|
||||||
config.fonts_dir = fonts_dir
|
config.fonts_dir = fonts_dir
|
||||||
|
|
Loading…
Reference in a new issue