gpt4 book ai didi

angular-material - 如何摆脱 Angular Material 额外的样式和由它链接的 CSS 'forcefully'

转载 作者:行者123 更新时间:2023-12-01 02:04:45 24 4
gpt4 key购买 nike

  • 我正在使用 JSPM/SystemJS
  • 我正在使用 Angular Material 和额外的表库(它也导入了 Angular Material)
  • 我也很想使用 SASS ONLY 版本 Angular Material by @import 'angular-material.scss'

  • 但是当我这样做并链接我编译的 app.css 时,我从 Angular Material 中得到了很多额外的东西:
  • 我得到多个 <style> <head> 中的标签拥有无数的 CSS 样式(?????)
  • 我得到两个额外的 <links><head>每次使用 SystemJS 导入“angular-material.js”包(一个来自我的 JS,一个来自额外的库 - 不同版本)

  • enter image description here

    那是因为我和我们从 JS angular-material 包中导入的额外库。这不是我要的 - 我只想要我的 app.css .那么,我怎样才能摆脱多余的标签呢?

    我猜问题是 angular-material 添加到 package.json 的 JSPM 部分:
    "shim": {
    "angular-material": {
    "deps": [
    "./angular-material.css!"
    ]
    }
    },

    和 JSPM 在第一行更改 angular-material.js:
    "format global";
    "deps ./angular-material.css!";

    我个人认为这是一个非常烦人的 BUG 不是功能 - 它使得无法使用 SASS 版本并且无法永久更正它 - 当我在 JSPM 包下载时更改它时,它会在更新后或安装过程中被覆盖(这使得无法分发我的应用程序)。

    所以,问题是 - 有没有办法永久摆脱所有额外的 <style><link> JSPM/AngularMaterial 插入的标签,所以我只能使用我的 SASS 编译版本的样式? (已经 fork 了 lib 并删除了 shim 但也许我的应用程序中有配置允许我使用“官方”版本?)

    最佳答案

    这篇文章有我认为你正在寻找的答案!
    How to disable CSS imports in JSPM / SystemJS

    使用 jspm 安装 angular-material,同时覆盖 shim 依赖项:

    jspm install angular-material -o '{ shim: {} }'

    这可以防止 jspm 添加 angular-material.css 作为依赖项。接下来,您可以使用以下命令将 angular-material.scss 重新导入到您的 SASS 文件中:
    @import 'jspm_packages/github/angular/bower-material@0.11.4/angular-material.scss';

    这将再次重新导入所有 css,但会导入到您的 css 工作流程中。或者您可以使用 jspm 重新导入它。首先安装jspm css插件:
    jspm install css

    然后使用 javascript 将 css 重新导入:
    import 'angular-material/angular-material.css!'
    import angularMaterial from 'angular-material';

    这将需要首先使用 SASS 编译 css 文件。有一个选项可以使用 jspm 即时编译 SASS。但对我来说似乎很慢:
    jspm install scss=sass

    然后使用:
    import 'angular-material/angular-material.scss!'

    更新 : angular-material 还包含一些默认主题 css 作为 JavaScript 中的 const 变量。您可以在 angular-material.js 底部开始查看此代码:
    angular.module("material.core").constant("$MD_THEME_CSS"...

    当加载到您的浏览器时,这会动态地向页面文档添加许多 css 样式标签。要禁用它们,您需要使用以下命令自己重新编译 angular-material:
    git clone https://github.com/angular/material.git

    然后安装依赖:
    cd material
    npm install

    然后转到 gulp/util.js 并将第 53 行更改为:
    var jsProcess = series(jsBuildStream, themeBuildStream() )

    成为:
    var jsProcess = series(jsBuildStream)

    然后运行构建过程:
    gulp build

    然后将 dist/文件夹中新创建的文件复制到您的项目中。这也将减少文件大小:

    angular-material.js 842KB > 792KB
    angular-material.min.js 291KB > 242KB

    我将要求 angular-material 库所有者默认不包含主题。

    关于angular-material - 如何摆脱 Angular Material 额外的样式和由它链接的 CSS 'forcefully',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33466779/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com