#998024 RFP: node-sass -- The reference implementation of Sass, written in Dart

Package:
wnpp
Source:
wnpp
Submitter:
Andrey Rahmatullin
Date:
2026-09-29 14:37:04 UTC
Severity:
wishlist
#998024#5
Date:
2021-10-28 16:45:21 UTC
From:
To:
* Package name    : node-sass
  Version         : 1.43.4
  Upstream Author : Natalie Weizenbaum <nweiz@google.com>
* URL             : https://github.com/sass/dart-sass
* License         : MIT
  Programming Lang: Dart
  Description     : The reference implementation of Sass, written in Dart

This is a build-dep of furo.

#998024#12
Date:
2021-12-27 07:40:38 UTC
From:
To:
Hi,

sadly dart isn't packaged in Debian. As a workaround, you can use
node-node-sass.

Cheers,
Yadd

#998024#19
Date:
2024-01-18 12:30:47 UTC
From:
To:
Hi,

rsass can appropriately compile sass files which is convenient for Debian
packaging.

Thanks,

Alex

#998024#24
Date:
2025-09-16 20:25:38 UTC
From:
To:
Yes. There is a multitude of sass implementations, including
node-node-sass, node-grunt-sass, rsass, sassc.

There's also a separate ITP for *another* rust sass implementation in
#1093767. It says, accurately, that neither rust implementation is a
complete implementation of dart-sass, which this aims to package.

I have tested rsass against a codebase here and it fails to implement
map.deep-merge, for example.

Really, we should just aim at having the reference implementation here,
because otherwise we're just doing our users a disservice at providing
incomplete `sass` implementations.

a.

#998024#31
Date:
2026-06-20 12:37:53 UTC
From:
To:
El sábado, 20 de junio de 2026 a las 12:11, Pierre Gruet <pgt@debian.org> escribió:

CC'ing Edward, since this package grew directly out during the review of node-material-web: that package needs Dart Sass, which can only be built from source with dart2js from the Dart SDK: hence this ITP.

CC'ing also #998024, since this will unblock that one.

Having dart-sdk finally unblocks the long-standing RFP #998024 (Dart Sass) which could then be packaged and close it (also a prerequisite for #931793, Flutter). The proof of concept already builds the Dart SDK from source, offline, in sbuild with the Debian toolchain (using system clang/gn/ninja) and a self-hosting bootstrap like ghc/gnat;

I'll need some guidance regarding the agreement on that bootstrap before any upload. I would appreciate anyone pitching in on this.

Best,

Juan

#998024#38
Date:
2026-08-30 23:33:14 UTC
From:
To:
-- 
Hello,

We hope this message finds you in good health.

This is the Foundation of Mr. Cheng Saephan. You have been selected to
become part of his shared blessing.

Warm regards,
Sandra Anderson
Cheng Saephan Foundation

#998024#49
Date:
2026-09-26 12:23:40 UTC
From:
To:
Hi,

(Resending once more: two earlier attempts at this text did not reach the
bug log.  Apologies for the noise.)

I am taking this RFP over, so please read it as an ITP from now on.

* Package name    : node-sass
  Version         : 1.105.0
  Upstream Author : The Sass team (Google LLC)
* URL             : https://sass-lang.com/dart-sass
  Source          : https://github.com/sass/dart-sass
* License         : MIT
  Programming Lang: Dart, shipped as JavaScript (built with dart2js)

Dart Sass is the reference implementation of the Sass stylesheet language,
and the only one still maintained: Ruby Sass reached end of life in 2019,
and the LibSass family was declared end-of-life upstream on 2025-10-23
(its repository has had no commit since 2023-12).

Debian currently ships only the retired implementations -- libsass 3.6.5,
sassc 3.6.1, node-node-sass 9.0.0 and python3-libsass 0.23.0 -- and the
"sass" virtual package is provided solely by ruby-sass, whose own short
description reads "deprecated CSS compiler".  Anything using the modern
module system (@use / @forward), sass:math or CSS color spaces cannot be
built with what we have in the archive today.

Naming and packaging, for the record:

- Source and binary package: node-sass, following the JS Team's node-
  prefix convention for the npm module "sass".  (The existing
  node-node-sass is a different package: the npm module "node-sass",
  which is a binding for LibSass.)
- Architecture: all.  The shipped artifact is the dart2js output, so at
  run time it needs only nodejs; dart-sdk is a build dependency.  This
  keeps the package usable where dart-sdk is not available -- dart-sdk is
  currently amd64-only.
- I intend to ship /usr/bin/sass, which collides with ruby-sass (it
  installs /usr/bin/sass, /usr/bin/scss, /usr/bin/sass-convert and three
  man pages), so the package will carry "Conflicts: ruby-sass" together
  with "Replaces: ruby-sass".

Two things I would like the Debian Ruby Team to weigh in on:

1. If you would rather keep both installable, I can put /usr/bin/sass
   under update-alternatives instead of using Conflicts/Replaces.
2. Dart Sass has no equivalent of sass-convert (dropped upstream in Sass
   3.5), and its CLI is a single "sass" binary with no separate "scss"
   command.  Taking over /usr/bin/sass therefore means dropping
   sass-convert, and I need to decide whether to add a small "scss"
   wrapper or let it go.  Please say if anything in the archive relies on
   either of those.

Why now: this bug was blocked by #1140414 (dart-sdk).  That ITP has been
closed and dart-sdk 3.13.4+dfsg1-2 is now in unstable, so I have removed
the block.  I already have a working dart2js build of Dart Sass made with
Debian's own dart-sdk.

I will keep this bug updated, and the first upload will close it.

Regards,
Emfox Zhou

#998024#54
Date:
2026-09-26 13:29:54 UTC
From:
To:
Quoting Emfox Zhou (2026-09-26 14:23:40)

From the project description, it seems that node tool is but a thin
wrapper, so provide that only as binary package name: Upstream project
is *not* mainly oriented towards Node.js.

Please provide the executable binary as dart-sass (or sass-dart), to
allow the user to switch between multiple implementations themselves
Historically sass was one single thing, implemented in Ruby, but
nowadays it is multiple implementations *and* multiple slightly
incompatible specifications, so this is not a decision tied to the Ruby
packaging but generally about the usability of the splintered world of
Sass/SCSS.

In short: Do *NOT* introduce package names or executable names that
conflict with existing packages or tools.

Thanks a lot for packaging dart-sass.

 - Jonas

#998024#59
Date:
2026-09-26 17:10:59 UTC
From:
To:
Le sam. 26 sept. 2026, 14:25, Emfox Zhou <emfox@debian.org> a écrit :

Cool, and interesting.
Note that https://tracker.debian.org/pkg/rsass has recently been added to
Debian,
so the "need" for node-sass is somewhat tamed by rsass.

#998024#64
Date:
2026-09-27 02:48:29 UTC
From:
To:
Follow-up on the naming point raised earlier in this report.

The source package is now dart-sass, matching upstream's project and standalone
executable name, as suggested there.  One source builds two binaries:

  dart-sass   the compiler as a self-contained native executable, installed as
              /usr/bin/dart-sass; Architecture: amd64, and it needs neither the
              Dart SDK nor Node.js at run time
  node-sass   the dart2js build as the Node.js module "sass", installed under
              /usr/share/nodejs/sass for bundlers such as sass-loader;
              Architecture: all

The generic command name is not claimed outright: the package provides the
virtual package "sass" and offers /usr/bin/sass, with its manual page as an
alternatives slave, through update-alternatives (priority 40), which is what
Policy 3.9 asks for so that implementations can be installed together.  No
Conflicts/Replaces and no dpkg-divert are used.  ruby-sass ships that path as a
plain file, so there the name stays with ruby-sass and our alternative is only
registered; ruby-sass is being asked separately to offer it as an alternative
too.

Packaging: https://salsa.debian.org/dart-team/dart-sass

#998024#71
Date:
2026-09-27 05:31:12 UTC
From:
To:
The Debian NEW review of dart-sass 1.105.0-1 has been completed.

Decision: ACCEPTED
Reviewer: Andrew McMillan

Review comment:

Hi,

I have accepted this, but I notice there are a raft of dart packages awaiting review, and I would recommend at least addressing #2 below for other builds.

There are attribution-accuracy problems in debian/copyright:

1. Missing third-party attribution (PostCSS).

pkg/sass-parser/lib/src/stringifier.ts:7-10 explicitly states "Portions of this source file are adapted from the PostCSS codebase," © 2013 Andrey Sitnik (MIT). The Files: * stanza credits only "2016, Google Inc." and has no separate stanza for these PostCSS-derived portions. Still MIT (DFSG-free), but the copyright file fails to acknowledge a real third-party copyright holder.

2. Files: debian/* stanza absent.

The packaging files' own copyright (packager) isn't attributed separately; the lone Files: * stanza technically covers them too but general practice is to include a debian/* stanza recognizing the work of the Debian packagers.


Packaging quality
=================

Build-Depends incomplete relative to pubspec.yaml.

The pubspec declares http and typed_data as dependencies, but dart-http and dart-typed_data are missing from Build-Depends (debian/control:5-34). It currently doesn't break the build only because the compiled entry points (bin/sass.dart, lib/src/js.dart) never import package:http (used only in tool/grind/*) or typed_data. This is fragile and inconsistent; conversely dart-cli-pkg, dart-ffi, dart-fixnum are in Build-Depends though only used by dev tooling, not compiled output.


Thanks!

Full review details: https://dfsg-new-queue.debian.org/reviews/dart-sass

#998024#76
Date:
2026-09-27 06:00:34 UTC
From:
To:
We believe that the bug you reported is fixed in the latest version of
dart-sass, which is due to be installed in the Debian FTP archive.

A summary of the changes between this version and the previous one is
attached.

Thank you for reporting the bug, which will now be closed.  If you
have further comments please address them to 998024@bugs.debian.org,
and the maintainer will reopen the bug report if appropriate.

Debian distribution maintenance software
pp.
Emfox Zhou <emfox@debian.org> (supplier of updated dart-sass package)

(This message was generated automatically at their request; if you
believe that there is a problem with it please contact the archive
administrators by mailing ftpmaster@ftp-master.debian.org)
Format: 1.8
Date: Sat, 26 Sep 2026 23:30:00 +0800
Source: dart-sass
Binary: dart-sass node-sass
Architecture: source amd64 all
Version: 1.105.0-1
Distribution: unstable
Urgency: medium
Maintainer: Emfox Zhou <emfox@debian.org>
Changed-By: Emfox Zhou <emfox@debian.org>
Description:
 dart-sass  - Dart implementation of Sass (native compiler)
 node-sass  - Dart implementation of Sass (JavaScript library for Node.js)
Closes: 998024
Changes:
 dart-sass (1.105.0-1) unstable; urgency=medium
 .
   * Initial release (Closes: #998024)
Checksums-Sha1:
 4804c7ab8c23b73908377a2403a1e78090e97cd2 2355 dart-sass_1.105.0-1.dsc
 33ecd00d1749744a235d16e178580dabff841490 839987 dart-sass_1.105.0.orig.tar.gz
 c6a7904e7815e84ddbcccf2750fba8fd4f15cb73 10504 dart-sass_1.105.0-1.debian.tar.xz
 87064285737ef021107a503101229ea68789c91d 7025 dart-sass_1.105.0-1_amd64.buildinfo
 a3de4257f6300488800fceb40fbff2a28142a2ed 3345480 dart-sass_1.105.0-1_amd64.deb
 093bdd13d85ee76caa6ce7c5114aba449b6c2aa6 411808 node-sass_1.105.0-1_all.deb
Checksums-Sha256:
 aa38faa5423ce6d185910a4c7a59a418350cf5dca9bc5f41e3aa21fad9725d20 2355 dart-sass_1.105.0-1.dsc
 4ff2fd60255d4e214f00a99f6411b10a0b3981c1b17bf48f66a757d332a5f46f 839987 dart-sass_1.105.0.orig.tar.gz
 be7c71bde42b46c7738e8a1820cac50674c8a3d87ddd7b130a80c5ca1ea6bb7f 10504 dart-sass_1.105.0-1.debian.tar.xz
 ccc1ec9ad061147e5f97e22eac6180a25a34c02dbc9df2a1c9e45b83f04e93b9 7025 dart-sass_1.105.0-1_amd64.buildinfo
 e742646faf70058adf8afb1cde52d34399413e6544281dafee710374599cc7c4 3345480 dart-sass_1.105.0-1_amd64.deb
 c9e6dfc00f49ecf17aa6ae96240a80bdd639c78d8da7bc146e38ea221c22458d 411808 node-sass_1.105.0-1_all.deb
Files:
 275e307095ea60c8db6866927475f747 2355 web optional dart-sass_1.105.0-1.dsc
 2b51c40b8547892032a02ba62c6c5a4f 839987 web optional dart-sass_1.105.0.orig.tar.gz
 e99de1105f63bdc10eeb40e15144840d 10504 web optional dart-sass_1.105.0-1.debian.tar.xz
 b0bc4a1026d5b9562aa04b2e16798f27 7025 web optional dart-sass_1.105.0-1_amd64.buildinfo
 0b7119687601746bcbabbdda7c8a4b35 3345480 web optional dart-sass_1.105.0-1_amd64.deb
 07b5deafb27c9992d8cd107ea7786c03 411808 javascript optional node-sass_1.105.0-1_all.deb
-----BEGIN PGP SIGNATURE-----

iQIzBAEBCgAdFiEEGSauJtItZVqOiaNpgImbv9t7vZQFAmq4jWQACgkQgImbv9t7
vZQvNhAAlD5JxKRyWK4hau9rY941jxj8aypnyoWI7H0ruCt/v/qFfDVMg4Uk0c6F
n3wJ1lER3zwh9L1dWrWwKYJBdLhEhX9oseWhvt1RUXGvE8nr4POozy52+7rupeyN
WewSVXodZ9+j1trwOyF88dNCw2XVdKI0AyAZaFdRUcXhf0KwCAEfzFAbbcBdcZ5U
aq4mKsFRn+LP6MdQfK6fkoQ8pfjZeLOq+u1wf67VORgjb7NferfTqfvtb1at8G/Y
go5d6sm9J0McOe5mWw3qr14U7eHp0ayFCAVn8jwtn2atEUpgolrwNEvDwZnDbafo
aQyblRMzX0zHUj4IL3vauD/YLzFDux5jKAQ8614H+9fxROImQDQuDmFoOAgSpcNQ
qQ4o+icFeN2pzm+aa+iv7XX0DZt2/Ftt60QA2JTgKk/5QEaMcnvt837LSgWfKF5m
12mjhkA7P9d1XYiO98dS7yStPArhm7d50lcKkFBnvsCdl/haOixLDjL2IJ9NGNbx
HhMG0chsmkkhGSAPqL0UTNBUQxX31sp4XfsunWxVdBJCzpO3DFWl8Be6QDg7fo8q
jsLtSCBjjDipqfbV79wSVO5aOimToo91O2CiCwsEaFPFqJ8Kbo03/qh8ckwBrDNU
Y2r+aW6QRH4I3SNUrMYCbttm5oeB8KjRDjcotIbQSxpjOvkVDZ0=
=YP8f
-----END PGP SIGNATURE-----

#998024#81
Date:
2026-09-28 20:29:47 UTC
From:
To:
I think we should just drop any CLI tools from ruby-sass. In the long
term, we should probably remove it entirely, but the reverse
dependencies need to be updated first.

Reverse-Depends
===============
* libplack-middleware-file-sass-perl
* openqa-common
* sass-spec

Reverse-Recommends
==================
* libplack-middleware-file-sass-perl
* nanoc
* ruby-haml [amd64 arm64 armhf i386 loong64 ppc64el riscv64 s390x]
* sass-elisp
* sass-spec

I just uploaded a version of ruby-sass that removes the command line
tools. You could make dart-sass Breaks: and Replaces: ruby-sass (<<
3.7.4-7~)

#998024#86
Date:
2026-09-29 14:36:06 UTC
From:
To:
On Tue, Sep 29, 2026 at 4:29 AM Antonio Terceiro <terceiro@debian.org> wrote:

Thanks, I've applied it and uploaded a new dart-sass.