diff --git a/bin/only-commit-source.js b/bin/only-commit-source.js index 77ad0d981..f18a91132 100755 --- a/bin/only-commit-source.js +++ b/bin/only-commit-source.js @@ -18,11 +18,32 @@ function findBuiltFiles( dir ) { } const isProbablyBuilt = filePath.endsWith('.css'); + const basename = path.basename( filePath, '.css' ); + + // `.css` files exactly 2 directories below `_imports/` are source files + // in the reorganized third-party library structure (e.g. Bootstrap 4/5). + // They use `.css` extension by convention and are not build artifacts. + const isLibrarySource = /_imports\/[^/]+\/[^/]+\/[^/]+\.css$/.test( relativePath ); + + // `core-styles.*.css` files are consumer-facing entry points in `_imports/`; + // they aggregate @imports for a client library and must be published. + const isEntryPoint = /_imports\/core-styles\.[^/]+\.css$/.test( relativePath ); + + // Files whose name starts with `demo` / `example`, or contains `.demo`, + // are Fractal-only demo helpers and are never compiled into the package. + const isDemoOrExample = /(?:^demo(?:[.-]|$)|\.demo(?:[.-]|$)|^example(?:[.-]|$))/.test( basename ); + + // `_imports/vendors/` exists on epic/v3 but is removed on epic/v3--reorg; + // this rule becomes a no-op once the reorg merges in. + const isVendored = relativePath.includes( '_imports/vendors' ); + const shouldIgnore = ( - /_imports\/[^/]+\/[^/]+\/[^/]+\.css$/.test(relativePath) || + isLibrarySource || filePath.endsWith('fractality.server.refresh.css') || - relativePath.includes('_imports/vendors') || - filePath.endsWith('README.css') + isVendored || + filePath.endsWith('README.css') || + isEntryPoint || + isDemoOrExample ); if ( isProbablyBuilt && ! shouldIgnore ) { diff --git a/src/lib/_imports/components/c-tag.postcss b/src/lib/_imports/components/c-tag.postcss index 2a1c1734a..de4acb4a1 100644 --- a/src/lib/_imports/components/c-tag.postcss +++ b/src/lib/_imports/components/c-tag.postcss @@ -1,4 +1,4 @@ -@import url("../tools/x-tag.css"); +@import url("../tools/x-tag.postcss"); @import url("./c-tag.selectors.postcss"); diff --git a/src/lib/_imports/djangocms-blog/cms-pagination.css b/src/lib/_imports/djangocms-blog/cms-pagination.postcss similarity index 100% rename from src/lib/_imports/djangocms-blog/cms-pagination.css rename to src/lib/_imports/djangocms-blog/cms-pagination.postcss diff --git a/src/lib/_imports/objects/o-offset-content.postcss b/src/lib/_imports/objects/o-offset-content.postcss index e848cfc21..1b91cecbb 100644 --- a/src/lib/_imports/objects/o-offset-content.postcss +++ b/src/lib/_imports/objects/o-offset-content.postcss @@ -8,7 +8,7 @@ Content that should be: Styleguide Objects.OffsetContent */ @import url("../tools/media-queries.postcss"); -@import url("../tools/x-offset-content.css"); +@import url("../tools/x-offset-content.postcss"); .o-offset-content--left, .o-offset-content--right { diff --git a/src/lib/_imports/tools/x-offset-content.demo.css b/src/lib/_imports/tools/x-offset-content.demo.css index a75988d81..6645ff34c 100644 --- a/src/lib/_imports/tools/x-offset-content.demo.css +++ b/src/lib/_imports/tools/x-offset-content.demo.css @@ -1,6 +1,6 @@ /* This CSS is ONLY for the pattern library. It is NOT part of the pattern. */ -@import url("./x-offset-content.css"); +@import url("./x-offset-content.postcss"); .x-offset-content--left, .x-offset-content--right { diff --git a/src/lib/_imports/tools/x-offset-content.css b/src/lib/_imports/tools/x-offset-content.postcss similarity index 100% rename from src/lib/_imports/tools/x-offset-content.css rename to src/lib/_imports/tools/x-offset-content.postcss diff --git a/src/lib/_imports/tools/x-pill.demo.css b/src/lib/_imports/tools/x-pill.demo.css index 29f65efef..d4c05e55b 100644 --- a/src/lib/_imports/tools/x-pill.demo.css +++ b/src/lib/_imports/tools/x-pill.demo.css @@ -1,4 +1,4 @@ -@import url("./x-pill.css"); +@import url("./x-pill.postcss"); /* FAQ: Wrapped to deter clients from using `.x-pill` */ /* HACK: Not in `x-pill/demo.css` because it is not processed */ diff --git a/src/lib/_imports/tools/x-pill.css b/src/lib/_imports/tools/x-pill.postcss similarity index 100% rename from src/lib/_imports/tools/x-pill.css rename to src/lib/_imports/tools/x-pill.postcss diff --git a/src/lib/_imports/tools/x-tag.demo.css b/src/lib/_imports/tools/x-tag.demo.css index 6ee8e9617..c0d71d00d 100644 --- a/src/lib/_imports/tools/x-tag.demo.css +++ b/src/lib/_imports/tools/x-tag.demo.css @@ -1,4 +1,4 @@ -@import url("./x-tag.css"); +@import url("./x-tag.postcss"); /* FAQ: Wrapped to deter clients from using `.x-tag` */ /* HACK: Not in `x-tag/demo.css` because it is not processed */ diff --git a/src/lib/_imports/tools/x-tag.css b/src/lib/_imports/tools/x-tag.postcss similarity index 100% rename from src/lib/_imports/tools/x-tag.css rename to src/lib/_imports/tools/x-tag.postcss