diff --git a/WORKSPACE b/WORKSPACE index 14ef704807c8..17336ea99ff2 100644 --- a/WORKSPACE +++ b/WORKSPACE @@ -15,11 +15,10 @@ http_archive( # Add sass rules http_archive( name = "io_bazel_rules_sass", - sha256 = "80d3e70ab5a8d59494aa9e3a7e4722f9f9a6fe98d1497be6bfa0b9e106b1ea54", - strip_prefix = "rules_sass-1.34.1", + sha256 = "60fa023fe694848acf769d816ad9fee970a27a37489aaf5443a7ccffaac805e9", + strip_prefix = "rules_sass-1.38.2", urls = [ - "https://github.com/bazelbuild/rules_sass/archive/1.34.1.zip", - "https://mirror.bazel.build/github.com/bazelbuild/rules_sass/archive/1.34.1.zip", + "https://github.com/bazelbuild/rules_sass/archive/1.38.2.zip", ], ) diff --git a/src/dev-app/mdc-select/BUILD.bazel b/src/dev-app/mdc-select/BUILD.bazel index 343261a20084..05b476785a2f 100644 --- a/src/dev-app/mdc-select/BUILD.bazel +++ b/src/dev-app/mdc-select/BUILD.bazel @@ -1,5 +1,4 @@ -load("@io_bazel_rules_sass//:defs.bzl", "sass_binary") -load("//tools:defaults.bzl", "ng_module") +load("//tools:defaults.bzl", "ng_module", "sass_binary") package(default_visibility = ["//visibility:public"]) diff --git a/src/dev-app/mdc-sidenav/BUILD.bazel b/src/dev-app/mdc-sidenav/BUILD.bazel index 013aa066a864..1f8b93d549a5 100644 --- a/src/dev-app/mdc-sidenav/BUILD.bazel +++ b/src/dev-app/mdc-sidenav/BUILD.bazel @@ -1,5 +1,4 @@ -load("@io_bazel_rules_sass//:defs.bzl", "sass_binary") -load("//tools:defaults.bzl", "ng_module") +load("//tools:defaults.bzl", "ng_module", "sass_binary") package(default_visibility = ["//visibility:public"]) diff --git a/src/dev-app/mdc-snack-bar/BUILD.bazel b/src/dev-app/mdc-snack-bar/BUILD.bazel index 38fa203848fc..f495a4b5933b 100644 --- a/src/dev-app/mdc-snack-bar/BUILD.bazel +++ b/src/dev-app/mdc-snack-bar/BUILD.bazel @@ -1,5 +1,4 @@ -load("@io_bazel_rules_sass//:defs.bzl", "sass_binary") -load("//tools:defaults.bzl", "ng_module") +load("//tools:defaults.bzl", "ng_module", "sass_binary") package(default_visibility = ["//visibility:public"]) diff --git a/src/dev-app/table-scroll-container/BUILD.bazel b/src/dev-app/table-scroll-container/BUILD.bazel index 545759dc538f..9f6464ec3097 100644 --- a/src/dev-app/table-scroll-container/BUILD.bazel +++ b/src/dev-app/table-scroll-container/BUILD.bazel @@ -1,5 +1,4 @@ -load("@io_bazel_rules_sass//:defs.bzl", "sass_binary") -load("//tools:defaults.bzl", "ng_module") +load("//tools:defaults.bzl", "ng_module", "sass_binary") package(default_visibility = ["//visibility:public"]) diff --git a/src/material-experimental/column-resize/BUILD.bazel b/src/material-experimental/column-resize/BUILD.bazel index 4457af308e22..b08e4db707dc 100644 --- a/src/material-experimental/column-resize/BUILD.bazel +++ b/src/material-experimental/column-resize/BUILD.bazel @@ -1,5 +1,4 @@ -load("@io_bazel_rules_sass//:defs.bzl", "sass_library") -load("//tools:defaults.bzl", "ng_module", "ng_test_library", "ng_web_test_suite") +load("//tools:defaults.bzl", "ng_module", "ng_test_library", "ng_web_test_suite", "sass_library") package(default_visibility = ["//visibility:public"]) diff --git a/src/material-experimental/mdc-helpers/BUILD.bazel b/src/material-experimental/mdc-helpers/BUILD.bazel index b4e407f9116d..e12ab0b0a5ea 100644 --- a/src/material-experimental/mdc-helpers/BUILD.bazel +++ b/src/material-experimental/mdc-helpers/BUILD.bazel @@ -1,5 +1,4 @@ -load("//tools:defaults.bzl", "sass_library") -load("//tools:npm_sass_library.bzl", "npm_sass_library") +load("//tools:defaults.bzl", "npm_sass_library", "sass_library") package(default_visibility = ["//visibility:public"]) diff --git a/tools/defaults.bzl b/tools/defaults.bzl index 8e5ea5fad4f2..3e28e7fa63b8 100644 --- a/tools/defaults.bzl +++ b/tools/defaults.bzl @@ -1,7 +1,7 @@ # Re-export of Bazel rules with repository-wide defaults load("@build_bazel_rules_nodejs//:index.bzl", _pkg_npm = "pkg_npm") -load("@io_bazel_rules_sass//:defs.bzl", _sass_binary = "sass_binary", _sass_library = "sass_library") +load("@io_bazel_rules_sass//:defs.bzl", _npm_sass_library = "npm_sass_library", _sass_binary = "sass_binary", _sass_library = "sass_library") load("@npm//@angular/bazel:index.bzl", _ng_module = "ng_module", _ng_package = "ng_package") load("@npm//@bazel/jasmine:index.bzl", _jasmine_node_test = "jasmine_node_test") load("@npm//@bazel/concatjs:index.bzl", _karma_web_test = "karma_web_test", _karma_web_test_suite = "karma_web_test_suite") @@ -54,6 +54,9 @@ def sass_binary(sourcemap = False, **kwargs): def sass_library(**kwargs): _sass_library(**kwargs) +def npm_sass_library(**kwargs): + _npm_sass_library(**kwargs) + def ts_library(tsconfig = None, deps = [], testonly = False, **kwargs): # Add tslib because we use import helpers for all public packages. local_deps = ["@npm//tslib"] + deps diff --git a/tools/npm_sass_library.bzl b/tools/npm_sass_library.bzl deleted file mode 100644 index 9638d428c8fc..000000000000 --- a/tools/npm_sass_library.bzl +++ /dev/null @@ -1,50 +0,0 @@ -load("@build_bazel_rules_nodejs//:providers.bzl", "NpmPackageInfo") -load("@io_bazel_rules_sass//:defs.bzl", "SassInfo") - -""" - Filters a list of files to only return Sass files (with the `.scss` extension). -""" - -def _filter_sass_files(files): - return [f for f in files if f.short_path.endswith(".scss")] - -""" - Rule that extracts Sass sources and its transitive dependencies from a NPM - package. The extracted source files are provided with the `SassInfo` provider - so that they can be consumed directly as dependencies of other Sass libraries - or Sass binaries. - - This rule is helpful when build targets rely on Sass files provided by an external - NPM package. In those cases, one wouldn't want to list out all individual source - files of the NPM package, but rather glob all needed Sass files from the NPM package. -""" - -def _npm_sass_library_impl(ctx): - transitive_sources = [] - - # Iterate through all specified dependencies and collect Sass files from build - # targets that have the `NpmPackageInfo` provider set. The `yarn_install` rule - # automatically sets these providers for individual targets in `@npm//<..>`. - for dep in ctx.attr.deps: - npm_info = dep[NpmPackageInfo] - if npm_info != None: - filered_files = _filter_sass_files(npm_info.sources.to_list()) - transitive_sources.append(depset(filered_files)) - - # Convert the collected transitive Sass sources to a depset. This is necessary - # for proper deduping of dependencies. Performance-wise it's not efficient that - # we need to unwrap the depset for NPM packages, but this is necessary to ensure - # incrementality and efficient sandboxing for targets relying on these outputs. - outputs = depset(transitive = transitive_sources) - - return [ - DefaultInfo(files = outputs), - SassInfo(transitive_sources = outputs), - ] - -npm_sass_library = rule( - implementation = _npm_sass_library_impl, - attrs = { - "deps": attr.label_list(allow_files = True, mandatory = True), - }, -)