Skip to main content

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-prefix><hash>.css (old
                                  hashes will be removed).

  --hash-prefix TEXT              Prefix to use for hashed filenames.
                                  [default: #]

  -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

Release files for scss-compile 0.1.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for scss-compile 0.1.3
File Size Uploaded
scss-compile-0.1.3.tar.gz 7.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for scss-compile 0.1.3
File Interpreter ABI Platform
scss_compile-0.1.3-py3-none-any.whl Python 3 none any Details

Total release size: 15.1 kB

Release files / scss-compile-0.1.3.tar.gz

Download URL scss-compile-0.1.3.tar.gz
Size 7.5 kB
Tags Source
SHA-256 checksum
How to use checksums
9312758d707a05a5ae72ec607f991cd5533fe1684b262b7837a7c17a071466ae
BLAKE2b-256 checksum
How to use checksums
5a1dc1a93a1ed6af30fe5da2e57c1a7d275d3720f6796b0be1118f7d54dc66da
Upload date
Uploaded using Trusted Publishing?
What is 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

Release files / scss_compile-0.1.3-py3-none-any.whl

Download URL scss_compile-0.1.3-py3-none-any.whl
Size 7.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
6a92b99be7734971b14bd8169da4bd96c0d579dcc2797bd1c902249a9c484964
BLAKE2b-256 checksum
How to use checksums
ad5362b370756d1177d69f69424e0e832bbd45c517b0e01aa3e647a36a41f615
Upload date
Uploaded using Trusted Publishing?
What is 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

Release history Release notifications | RSS feed

This release

0.1.3 This release

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page