| load("@build_bazel_rules_nodejs//internal/npm_install:npm_umd_bundle.bzl", "npm_umd_bundle") |
| load("@io_bazel_rules_sass//:defs.bzl", "sass_library") |
| load("//infra-sk/remove_css_imports_from_js:index.bzl", "remove_css_imports_from_js") |
| |
| package(default_visibility=["//visibility:public"]) |
| |
| exports_files(["rollup.config.js"]) |
| |
| ################################# |
| # Sass library for elements-sk. # |
| ################################# |
| |
| sass_library( |
| name = "elements-sk_scss", |
| srcs = glob(["node_modules/elements-sk/**/*.scss"]) + ["//:~elements-sk"], |
| ) |
| |
| # The UMD bundles below are only necessary for karma_mocha_test and karma_web_test BUILD targets, |
| # which require 3rd-party dependencies to be bundled as UMD modules and provided explicitly via the |
| # srcs argument. |
| |
| ############################## |
| # UMD bundles for common-sk. # |
| ############################## |
| |
| COMMON_SK_MODULES = [ |
| filename # node_modules/common-sk/modules/dom.js |
| .replace("node_modules/common-sk/modules/", "") # dom.js |
| .replace(".js", "") # dom |
| for filename in glob(["node_modules/common-sk/modules/*.js"]) |
| if not filename.endswith("_test.js") |
| ] |
| |
| [ |
| npm_umd_bundle( |
| name = "common-sk_%s_umd" % module, |
| package_name = "common-sk/modules/%s" % module, |
| entry_point = "@infra-sk_npm//:node_modules/common-sk/modules/%s.js" % module, |
| package = "@infra-sk_npm//common-sk", |
| ) |
| for module in COMMON_SK_MODULES |
| ] |
| |
| filegroup( |
| name = "common-sk_umd", |
| srcs = ["common-sk/modules/%s.umd.js" % module for module in COMMON_SK_MODULES], |
| ) |
| |
| ################################ |
| # UMD bundles for elements-sk. # |
| ################################ |
| |
| ELEMENTS_SK_MODULES = [ |
| filename # node_modules/elements-sk/icon/add-icon-sk.js |
| .replace("node_modules/elements-sk/", "") # icon/add-icon-sk.js |
| .replace(".js", "") # icon/add-icon-sk |
| for filename in glob(["node_modules/elements-sk/**/*.js"]) |
| if not filename.endswith("_test.js") |
| ] |
| |
| [ |
| npm_umd_bundle( |
| name = "elements-sk_%s_umd" % module.replace("/", "__"), |
| package_name = "elements-sk/%s" % module, |
| entry_point = "@infra-sk_npm//:node_modules/elements-sk/%s.js" % module, |
| package = "@infra-sk_npm//elements-sk", |
| excluded = [ |
| # The npm_umd_bundle rule fails with e.g. "Error: Cannot find module './buttons.scss'" |
| # when it encounters Sass/CSS modules imported from JavaScript code, e.g. |
| # "import './buttons.css'", because it treats all imports as JavaScript imports. |
| # Excluding any imported Sass/CSS modules prevents said erros. |
| "./buttons.scss", |
| "./checkbox-sk.scss", |
| "./collapse-sk.scss", |
| "./icon-sk.scss", |
| "./multi-select-sk.scss", |
| "./nav-links-sk.scss", |
| "./radio-sk.scss", |
| "./select.scss", |
| "./select-sk.scss", |
| "./spinner-sk.scss", |
| "./table.scss", |
| "./tabs-panel-sk.scss", |
| "./tabs-sk.scss", |
| "./toast-sk.scss", |
| ], |
| ) |
| for module in ELEMENTS_SK_MODULES |
| ] |
| |
| # Some elements-sk modules import CSS files from JavaScript, e.g. `import "styles.css"`. When said |
| # elements-sk modules are bundled as UMD modules and loaded from a Karma test, the test fails |
| # because the `require("styles.css")` imports in the UMD modules cannot be resolved. |
| # |
| # Erasing the CSS imports from the UMD bundles prevents these errors. This is OK because the CSS |
| # imports are only intended for generating CSS bundles with Webpack and the css-loader plugin, and |
| # have no effect when Webpack is not used. |
| [ |
| remove_css_imports_from_js( |
| name = "elements-sk_%s_umd_nocss" % module.replace("/", "__"), |
| src = ":elements-sk/%s.umd.js" % module, |
| out = ":elements-sk/%s.umd.nocss.js" % module, |
| ) |
| for module in ELEMENTS_SK_MODULES |
| ] |
| |
| filegroup( |
| name = "elements-sk_umd", |
| srcs = ["elements-sk/%s.umd.nocss.js" % module for module in ELEMENTS_SK_MODULES], |
| ) |
| |
| ###################### |
| # Other UMD bundles. # |
| ###################### |
| |
| npm_umd_bundle( |
| name = "lit-html_umd", |
| package_name = "lit-html", |
| entry_point = "@infra-sk_npm//:node_modules/lit-html/lit-html.js", |
| package = "@infra-sk_npm//lit-html", |
| ) |
| |
| npm_umd_bundle( |
| name = "chai_umd", |
| package_name = "chai", |
| entry_point = "@infra-sk_npm//:node_modules/chai/lib/chai.js", |
| package = "@infra-sk_npm//chai", |
| ) |
| |
| npm_umd_bundle( |
| name = "sinon_umd", |
| package_name = "sinon", |
| entry_point = "@infra-sk_npm//:node_modules/sinon/lib/sinon.js", |
| package = "@infra-sk_npm//sinon", |
| ) |
| |
| npm_umd_bundle( |
| name = "fetch-mock_umd", |
| package_name = "fetch-mock", |
| entry_point = "@infra-sk_npm//:node_modules/fetch-mock/esm/client.js", |
| package = "@infra-sk_npm//fetch-mock", |
| ) |