3

こんにちは、django-compressor のプリコンパイラを使用して Foundation scss を django に統合しようとしています。プロジェクトは次のようになります。

├── manage.py
├── requirements.txt
├── static
│   ├── config.rb
│   ├── humans.txt
│   ├── index.html
│   ├── javascripts
│   │   ├── foundation
│   │   │   ├── foundation.alerts.js
│   │   │   ├── foundation.clearing.js
│   │   │   ├── foundation.cookie.js
│   │   │   ├── foundation.dropdown.js
│   │   │   ├── foundation.forms.js
│   │   │   ├── foundation.joyride.js
│   │   │   ├── foundation.js
│   │   │   ├── foundation.magellan.js
│   │   │   ├── foundation.orbit.js
│   │   │   ├── foundation.placeholder.js
│   │   │   ├── foundation.reveal.js
│   │   │   ├── foundation.section.js
│   │   │   ├── foundation.tooltips.js
│   │   │   └── foundation.topbar.js
│   │   └── vendor
│   │       ├── custom.modernizr.js
│   │       ├── jquery.js
│   │       └── zepto.js
│   ├── MIT-LICENSE.txt
│   ├── robots.txt
│   ├── sass
│   │   ├── app.scss
│   │   ├── normalize.scss
│   │   └── _settings.scss
│   └── stylesheets
│       ├── app.css
│       └── normalize.css
├── templates
│   ├── 404.html
│   ├── 500.html
│   ├── admin
│   │   └── base_site.html
│   └── base.html
└── weddings
    ├── __init__.py
    ├── __init__.pyc
    ├── local_settings.py
    ├── local_settings.pyc
    ├── settings.py
    ├── settings.pyc
    ├── urls.py
    ├── urls.pyc
    └── wsgi.py

プリコンパイラは settings.py で次のようになります

COMPRESS_PRECOMPILERS = (
    ('text/x-scss', 'sass --scss --compass {infile} {outfile}'),
)

nginx + uwsgi で実行すると、次のエラーが表示されます。

Syntax error: File to import not found or unreadable: foundation/foundation-global.
              Load paths:
                /etc/uwsgi/vassals
                /etc/uwsgi/vassals/sass
                /srv/www/weddings/gems/compass-0.12.2/frameworks/blueprint/stylesheets
                /srv/www/weddings/gems/compass-0.12.2/frameworks/compass/stylesheets
                Compass::SpriteImporter
                /srv/www/weddings/gems/bourbon-3.1.1/app/assets/stylesheets
                /srv/www/weddings/gems/bourbon-3.1.1/app/assets/stylesheets
        on line 2 of /srv/www/weddings/weddings/static/sass/_settings.scss
        from line 2 of /srv/www/weddings/weddings/static/sass/app.scss
  Use --trace for backtrace.

config.rb を読み取っていないか、config.rb の設定が間違っていると思われます。

http_path = "/"
css_dir = "stylesheets"
sass_dir = "sass"
images_dir = "images"
javascripts_dir = "javascripts"
4

3 に答える 3

5

ファイルがあるconfig.rbので、Compass プロジェクトがあります。

Compass プロジェクトは、compassコマンド ライン ツールではなく、コマンド ライン ツールでコンパイルする必要がありsassます。

既に発見したように、コンパイルはプロジェクト フォルダー内から開始する必要があります。ただし、パスを settings.py にハードコードするのはお勧めできません。プロジェクトを移植できなくするからです。

ハードコーディングされたパスの代わりに、os.path.dirname(os.path.realpath(__file__))現在のスクリプトのパスを検出するために使用する必要があります。に相対的なフォルダーを変更するには、次のようsettings.pyに使用しますos.path.join()(必要に応じて調整します。使用できます..)。

os.path.join(os.path.dirname(os.path.realpath(__file__)), "static")

また、すでにPROJECT_DIRvar にsettings.py. この線をきれいにするために使用します。

于 2013-03-23T21:57:47.670 に答える
0

私の現在の回避策は、ocnfig.rb があるフォルダーで sass コマンドを実行することです。

COMPRESS_PRECOMPILERS = (
    ('text/x-scss', 'cd /srv/www/project/name/static && sass --scss --compass {infile} {outfile}'),
)
于 2013-03-21T22:46:40.823 に答える