Skip to main content

A CLI for compiling SCSS files to CSS, and associated pre-commit hook.

Project description

scss-compile

A CLI for compiling SCSS files to CSS, and associated pre-commit hook.

This CLI is a small wrapper around libsass-python, which also aims to be compatible with pre-commit, and provide a pre-commit hook.

NOTE: The package in on alpha release, but looks to be working as intended, and will be trialled in sphinx-panels, and then sphinx-book-theme.

Installation

To use directly as a CLI:

pip install scss-compile
scss-compile --help

To use via pre-commit:

Add to your .pre-commit-config.yaml

-   repo: https://github.com/executablebooks/scss-compile
    rev: v0.1.0
    hooks:
      - id: scss-compile
        args: [--config=config.yml] # optional

Configuration

You can can configure the compilation directly via the CLI or using a configuration file (simply replace - with _):

$ scss-compile --help
Usage: scss-compile [OPTIONS] [PATHS]...

  Compile all SCSS files in the paths provided.

  For directories; include all non-partial SCSS files, and for files; if
  partial, include all adjacent, non-partial, SCSS files.

Options:
  --recurse / --no-recurse        For directories, include files in sub-
                                  folders.  [default: True]

  -d, --partial-depth INTEGER     For partial files (starting '_') include all
                                  SCSS files up 'n' parent folders  [default:
                                  0]

  -s, --stop-on-error             Stop on the first compilation error.
  -e, --encoding TEXT             [default: utf8]
  -f, --output-format [nested|expanded|compact|compressed]
                                  [default: compressed]
  -m, --sourcemap                 Output source map.
  -h, --hash-filenames            Add the content hash to filenames:
                                  <filename>#<hash>.css (old hashes will be
                                  removed).

  -t, --translate TEXT            Source to output path translations, e.g.
                                  'src/scss:dist/css' (can be used multiple
                                  times)

  -p, --precision INTEGER         precision for numbers.  [default: 5]
  -q, --quiet                     Remove stdout logging.
  -v, --verbose                   Increase stdout logging.
  --exit-code INTEGER             Exit code when files changed.  [default: 2]
  --no-git                        Do not add new files to a git index.
  --test-run                      Do not delete/create any files.
  --config FILE                   Read default configuration from a file
                                  (allowed extensions: .json, .toml, .yml,
                                  .yaml.)

  --help                          Show this message and exit.

--config can point to any of three file-formats:

config.json:

{
  "scss-compile": {
    "precision": 5,
    "sourcemap": true,
    "hash_filenames": true,
    "output_format": "compressed",
    "partial_depth": 1,
    "translate": ["tests/example_sass:tests/output_css"]
  }
}

config.toml:

[scss-compile]
precision = 5
sourcemap = true
hash_filenames = true
output_format = "compressed"
partial_depth = 1
translate = ["tests/example_sass:tests/output_css"]

config.yml/config.yaml:

scss-compile:
  precision: 5
  sourcemap: true
  hash_filenames: true
  output_format: compressed
  partial_depth: 1
  translate: ["tests/example_sass:tests/output_css"]

Usage

If you simply specify a normal SCSS file, then the CSS file will be output in the same folder:

$ scss-compile scss/file.scss
scss/
    file.scss
    file.css

If you use the sourcemap option, then a sourcemap will also be output, and a sourceMappingURL comment added to the CSS:

$ scss-compile scss/file.scss --sourcemap
scss/
    file.scss
    file.css
    file.scss.map.json

If you use the hash_filenames option, then the CSS filename will include the content hash (and any existing file with a different hash will be removed):

$ scss-compile scss/file.scss -- hash-filenames
scss/
    file.scss
    file#beabd761a3703567b4ce06c9a6adde55.css

If you specify a partial file, i.e. ones beginning _ used via @import and @use, then all "normal" SCSS files in that folder will be compiled. If you also use the partial-depth option, then files in parent folders will also be compiled.

$ scss-compile scss/imports/_partial.scss -- partial-depth=1
scss
   /imports
       _partial.scss
    file.scss
    file.css

If you set the --translate option, then the output files will be "translated" to the specified output path (which will be created if it does not yet exist):

$ scss-compile scss/file.scss --translate "src/scss:dist/css" --sourcemap
src/scss/
    file.scss
dist/css/
    file.css
    file.scss.map.json

If you specify a directory, then it will first find all SCSS files in that directory, and recursive sub-folders (unless --no-recurse is used), then treat each individual file as above.

Development

To run the tests:

pip install tox
tox -e py37

To test out the CLI:

tox -e py37-cli

For code style:

pip install pre-commit
pre-commit run --all

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

scss-compile-0.1.1.tar.gz (7.4 kB view details)

Uploaded Source

Built Distribution

scss_compile-0.1.1-py3-none-any.whl (7.5 kB view details)

Uploaded Python 3

File details

Details for the file scss-compile-0.1.1.tar.gz.

File metadata

  • Download URL: scss-compile-0.1.1.tar.gz
  • Upload date:
  • Size: 7.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/50.3.0 requests-toolbelt/0.9.1 tqdm/4.49.0 CPython/3.7.9

File hashes

Hashes for scss-compile-0.1.1.tar.gz
Algorithm Hash digest
SHA256 b7f6c178a1df59431469e4055585a6c81adfab38f2ea2205bf5e61262531c17a
MD5 2dd2b255a6c44214286b8dd9d19b9d08
BLAKE2b-256 3a2df4be5da7885b67e61bdfca52b9e14c7becb6cd8e3f752e8f094d5b3eb7f8

See more details on using hashes here.

File details

Details for the file scss_compile-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: scss_compile-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 7.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/50.3.0 requests-toolbelt/0.9.1 tqdm/4.49.0 CPython/3.7.9

File hashes

Hashes for scss_compile-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 3b1c2d8da9b5049c41d2998e0ad4e8fe8b55fe4e86e4eb7bb6a6874d264e3bb8
MD5 5a7b76498304549209be6f79bbe80423
BLAKE2b-256 35bd914ed7bd35bbc5eea2fdf7c11fd653f09e0cd395158661c96a17c9158cc0

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page