diff --git a/.stylelintrc.json b/.stylelintrc.json index b0496c335ba..d975da860ba 100644 --- a/.stylelintrc.json +++ b/.stylelintrc.json @@ -1,3 +1,4 @@ { - "extends": "@18f/identity-stylelint-config" + "extends": "@18f/identity-stylelint-config", + "ignoreFiles": "**/fixtures/**/*" } diff --git a/app/javascript/packages/build-sass/CHANGELOG.md b/app/javascript/packages/build-sass/CHANGELOG.md index 4153de0f449..1779cd56b61 100644 --- a/app/javascript/packages/build-sass/CHANGELOG.md +++ b/app/javascript/packages/build-sass/CHANGELOG.md @@ -1,3 +1,9 @@ +## Unreleased + +### Improvements + +- Adds support for ".scss" file extension, as an alternative to the current ".css.scss" support. In both cases, the output files use the basename with a ".css" extension. + ## 1.2.0 ### Improvements diff --git a/app/javascript/packages/build-sass/README.md b/app/javascript/packages/build-sass/README.md index 31ec8fcc31a..09c3858c0ba 100644 --- a/app/javascript/packages/build-sass/README.md +++ b/app/javascript/packages/build-sass/README.md @@ -23,7 +23,7 @@ Default behavior includes: Invoke the included `build-sass` executable with the source files and any relevant command flags. ``` -npx build-sass path/to/sass/*.css.scss --out-dir=build +npx build-sass path/to/sass/*.scss --out-dir=build ``` Flags: diff --git a/app/javascript/packages/build-sass/fixtures/css-scss-extension/.gitignore b/app/javascript/packages/build-sass/fixtures/css-scss-extension/.gitignore new file mode 100644 index 00000000000..abdfa7226b6 --- /dev/null +++ b/app/javascript/packages/build-sass/fixtures/css-scss-extension/.gitignore @@ -0,0 +1 @@ +styles.css diff --git a/app/javascript/packages/build-sass/fixtures/css-scss-extension/styles.css.scss b/app/javascript/packages/build-sass/fixtures/css-scss-extension/styles.css.scss new file mode 100644 index 00000000000..e69de29bb2d diff --git a/app/javascript/packages/build-sass/fixtures/scss-extension/.gitignore b/app/javascript/packages/build-sass/fixtures/scss-extension/.gitignore new file mode 100644 index 00000000000..abdfa7226b6 --- /dev/null +++ b/app/javascript/packages/build-sass/fixtures/scss-extension/.gitignore @@ -0,0 +1 @@ +styles.css diff --git a/app/javascript/packages/build-sass/fixtures/scss-extension/styles.scss b/app/javascript/packages/build-sass/fixtures/scss-extension/styles.scss new file mode 100644 index 00000000000..e69de29bb2d diff --git a/app/javascript/packages/build-sass/index.js b/app/javascript/packages/build-sass/index.js index cad1aae6e76..9348c688ad4 100644 --- a/app/javascript/packages/build-sass/index.js +++ b/app/javascript/packages/build-sass/index.js @@ -35,7 +35,7 @@ export async function buildFile(file, options) { quietDeps: true, }); - let outFile = basename(file, '.scss'); + let outFile = `${basename(basename(file, '.css.scss'), '.scss')}.css`; const lightningResult = lightningTransform({ filename: outFile, diff --git a/app/javascript/packages/build-sass/index.spec.js b/app/javascript/packages/build-sass/index.spec.js new file mode 100644 index 00000000000..c85c00b1c7f --- /dev/null +++ b/app/javascript/packages/build-sass/index.spec.js @@ -0,0 +1,26 @@ +import { dirname, join } from 'node:path'; +import { fileURLToPath } from 'node:url'; +import { stat } from 'node:fs/promises'; +import { buildFile } from './index.js'; + +const cwd = dirname(fileURLToPath(import.meta.url)); + +describe('buildFile', () => { + context('with .css.scss file extension', () => { + it('writes a file with the same basename and a .css extension', async () => { + const fixtureDir = join(cwd, 'fixtures/css-scss-extension'); + await buildFile(join(fixtureDir, 'styles.css.scss'), { outDir: fixtureDir }); + + await stat(join(fixtureDir, 'styles.css')); + }); + }); + + context('with .scss file extension', () => { + it('writes a file with the same basename and a .css extension', async () => { + const fixtureDir = join(cwd, 'fixtures/scss-extension'); + await buildFile(join(fixtureDir, 'styles.scss'), { outDir: fixtureDir }); + + await stat(join(fixtureDir, 'styles.css')); + }); + }); +});