qooxdoo / qooxdoo

qooxdoo - Universal JavaScript Framework
http://qooxdoo.org
Other
764 stars 260 forks source link

Resolve issue 10618 Scss name conflict #10619

Closed WillsterJohnsonAtZenesis closed 10 months ago

WillsterJohnsonAtZenesis commented 10 months ago

Fixes #10618

Previously the known good compiler was always the latest available ^7.0.0 on npm. It has now been pinned to v7.3. The node_modules for known good is now removed when the bootstrap is run to ensure dependencies are installed correctly. The package-lock.json has been removed as it previously was ignored by tooling, and is unnecessary for installing a pinned version of the compiler.

For some reason I could not determine or resolve, v7.4 has different behaviour with it's dependencies, allowing the latest version of Sass to be installed (vs v1.43.4). Since v1.65, Sass supports the new CSS builtin rem() function.

Pinning Sass to v1.64.2 for now will resolve any conflicts with the buitin rem() when compiling Sass, and may allow for letting the known good compiler increase to the version this change is added in (eg, v7.6.2 vs v7.3).

The documentation for themes has been modified to note the deprecation notice and to reference the new function instead.

WillsterJohnsonAtZenesis commented 10 months ago

When you update package.json you need to update npm-shrinkwrap.json too!

Ah my bad, I've added a commit for that above.

Why do you use fixed version of sass 1.64.2 and not the newest one ^1.65.1?

In Sass v1.65.0 support was added for the built-in rem() function in CSS, as specified by Values and Units Level 4. This conflicts with the function defined in Qooxdoo and is the reason for #10618 (the builtin rem() always takes priority in Sass ^1.65.0, and it has very different functionality)

The use of Sass ^1.65 is causing these errors, and is also the reason why I had to drop the known good down to v7.3, as using newer versions would install Sass ^1.65, which blocks bootstrap-compiler from working - v7.3 is pinned at Sass v1.43.4.

That is to say that every version after and including v7.4 may now be broken, or partly broken, due to the combination of the naming conflict and the permissive dependency version. As Sass 1.65.0 was only released 5 days ago, this hasn't been an issue until now.

hkollmann commented 10 months ago

When you update package.json you need to update npm-shrinkwrap.json too!

Ah my bad, I've added a commit for that above.

Why do you use fixed version of sass 1.64.2 and not the newest one ^1.65.1?

In Sass v1.65.0 support was added for the built-in rem() function in CSS, as specified by Values and Units Level 4. This conflicts with the function defined in Qooxdoo and is the reason for #10618 (the builtin rem() always takes priority in Sass ^1.65.0, and it has very different functionality)

The use of Sass ^1.65 is causing these errors, and is also the reason why I had to drop the known good down to v7.3, as using newer versions would install Sass ^1.65, which blocks bootstrap-compiler from working - v7.3 is pinned at Sass v1.43.4.

That is to say that every version after and including v7.4 may now be broken, or partly broken, due to the combination of the naming conflict and the permissive dependency version. As Sass 1.65.0 was only released 5 days ago, this hasn't been an issue until now.

hkollmann commented 10 months ago

Got it. So clamp version 1.64.2 and deprecate rem() as you did. In version 8 we can delete rem from our scss source and move to actual sass version again.