У меня возникли проблемы с выяснением, как управлять моими файлами scss. Вот как выглядит структура моей папки:

 manage.py
├── myWebsite
│   ├── __init__.py
│   ├── settings.py
│   ├── urls.py
│   └── wsgi.py
├── projects
│   ├── admin.py
│   ├── apps.py
│   ├── __init__.py
│   ├── migrations
│   │   └── __init__.py
│   ├── models.py
│   ├── static
│   │   └── projects
│   │       └── css
│   │           ├── index.css
│   │           ├── scss
│   │           │   └── survey.scss
│   │           └── tribute.css
│   ├── templates
│   │   └── projects
│   │       ├── base.html
│   │       ├── documentation.html
│   │       ├── index.html
│   │       ├── portfolio.html
│   │       ├── product.html
│   │       ├── survey.html
│   │       └── tribute.html
│   ├── tests.py
│   ├── urls.py
│   └── views.py
├── requirements.txt
└── staticfiles
    └── projects
        └── css
            └── scss
                ├── survey.css
                └── survey.css.map

Я хотел бы хранить свои файлы .scss в папке static / {app_name} / css / scss каждого приложения. Позже они компилируются в папке staticfiles, которая находится в корне проекта. Эта же папка является корнем для collectstatic, которая запускается при развертывании на сервере (AWS EB)

 02_collectstatic:
    command: "source /opt/python/run/venv/bin/activate && python manage.py collectstatic --noinput"

Поскольку я использую Django 2.2, должна быть возможность игнорировать файлы .scss, которые будут собираться с помощью collectstatic, но, похоже, они не работают, я попытался:

python manage.py collectstatic --noinput -i projects/static/projects/css/scss

РЕДАКТИРОВАТЬ: это вид ошибки, которую я получаю:

Activity execution failed, because: usage: manage.py collectstatic [-h] [--noinput] [--no-post-process]
  [-i PATTERN] [-n] [-c] [-l]
  [--no-default-ignore] [--version]
  [-v {0,1,2,3}] [--settings SETTINGS]
  [--pythonpath PYTHONPATH] [--traceback]
  [--no-color] [--force-color]
  manage.py collectstatic: error: unrecognized arguments: /projects/static/projects/css/scss
   (ElasticBeanstalk::ExternalInvocationError) 
0
Shynras 14 Апр 2019 в 21:53

2 ответа

Лучший ответ

Я думаю, что вы указываете неправильный путь, когда используете -i. Вам нужно найти путь от статического каталога root, а не от root проекта. Например, если ваш статический каталог:

STATICFILES_DIRS = [
    os.path.join(APPS_DIR, "static"),  # where projects is the apps directory
]
# OR if you are using django-cookie-cutter
# STATICFILES_DIRS = [str(APPS_DIR.path("static"))]

Затем обновите код следующим образом:

 python manage.py collectstatic --noinput -i projects/css/scss
1
ruddra 14 Апр 2019 в 20:43

После Django 2.2 Примечания к выпуску,

Добавлено соответствие пути к параметру collectstatic --ignore, чтобы можно было использовать шаблоны типа /vendor/*.js.

python manage.py collectstatic --noinput --ignore /projects/static/projects/css/scss
0
Hiroyuki Nuri 14 Апр 2019 в 19:29