jje*_*nzz 15 sass angular-cli angular
我正在尝试切换href
一个<link />
用于主题目的,并且SCSS主题存在于我的monorepo的包文件夹中,这些文件夹是符号链接的node_modules
.我需要能够编译和引用这些.
我遇到了以下固定问题:angular/angular-cli#3401并且一直试图实现类似的东西:
"styles": [
"styles.scss",
{
"input": "../node_modules/@org/themes/dark.scss",
"output": "dark",
"lazy": true
}
],
Run Code Online (Sandbox Code Playgroud)
我的理解(也许是不正确的)是这会将dark.scss
文件编译成dist/dark.bundle.css
我可以通过http:// localhost:4200/dist/dark.bundle.css加载它但是它没有按预期工作.我误解了某些事情或完全错误吗?
如何编译SCSS文件node_modules
,然后我可以在应用程序中延迟加载?我可以尝试另一种/更好的方法吗?
补充说明:
4.2.4
1.3.0
node_modules/@org/themes
是一个符号链接ng serve --preserve-symlinks
选项,以防上述问题.它没有任何区别我已经研究过Angular Material docs网站解决这个问题的方式,看起来他们有一个自定义构建脚本,assets
在服务应用程序之前将SCSS文件编译成目录中的CSS文件.我认为上面修复的问题消除了对这一步的需要,但也许没有.这是唯一可行的方法吗?
感谢@Kuncevic.我错过了--extract-css
国旗.
工作配置:
"styles": [
"styles.scss",
{
"input": "../node_modules/@org/themes/src/dark.scss",
"output": "themes/dark",
"lazy": true
}
],
Run Code Online (Sandbox Code Playgroud)
使用以下服务脚本,我可以通过http:// localhost:4200/themes/dark.bundle.css访问它:
ng serve --extract-css --preserve-symlinks
Kun*_*vič 11
通过设置"lazy": true
意味着它不会出现index.html
但是没有机制会延迟为你加载该包,请检查该注释:
懒惰的选项实际上并不是懒惰加载任何东西.它只是阻止它在应用程序启动时执行.
我同意"lazy": true
起初有点混乱.
如果你运行,ng build
你实际上可以看到你的构建中输出了什么,并分析cli生成的所有文件.
当你这样做时:
{
"input": "../node_modules/@org/themes/dark.scss",
"output": "dark",
"lazy": true
}
Run Code Online (Sandbox Code Playgroud)
您应该可以直接访问http:// localhost:4200/dark.bundle.js,但它不会出现在index.html
您设置的文件中"lazy": true
如果你想获得
dark.bundle.css
bundle而不是dark.bundle.js
dev模式,你可以使用--extract-css
flag.
cli生成样式以js
在开发模式下捆绑的原因是因为这种方式更快.当你做prod构建时ng buld --prod
它会像.css
默认情况下默认输出.
Rzv*_*van 10
我知道这是一篇旧帖子,但我还没有找到一个完整的例子,只是片段来在 Angular 中为CSS 文件或js 文件实现延迟加载。这是 Angular 7.1.4 版本和font-awesome 4.7和bootstrap 4延迟加载的解决方案
npm install --save font-awesome bootstrap
Run Code Online (Sandbox Code Playgroud)
编辑angular.json文件以确保编译器将生成分离的文件到dist文件夹中
"styles": [
"src/styles.css",
{
"input": "./node_modules/font-awesome/css/font-awesome.css",
"lazy": true,
"bundleName": "font-awesome"
},
{
"input": "./node_modules/bootstrap/dist/css/bootstrap.min.css",
"lazy": true,
"bundleName": "bootstrap"
}
],
Run Code Online (Sandbox Code Playgroud)
参数说明:
"input" : "第一步中的命令将下载引导程序和字体的位置"
"lazy" : " true的值将确保编译器不会将bootstrap.min.css和font-awesome.css文件嵌入到发送到浏览器的编译文件中"
"bundleName" : "是您将在dist文件夹中找到的名称"
<base href="/">
npm install --save font-awesome bootstrap
Run Code Online (Sandbox Code Playgroud)
注意: window.onload = function ()
用于确保页面被加载(这是因为我们进入dist的文件是.js格式;这是 Angular 编译的快捷方式)
ng build --extract-css=false --prod
Run Code Online (Sandbox Code Playgroud)
注意:在构建时我们使用--extract-css=false来生成.js文件
测试
您必须能够看到 bootstrap.js 和 font-awesome.js 像照片中一样分别加载,并且您还可以看到没有样式的页面=> 这是样式加载良好的时刻DOM 加载后
归档时间: |
|
查看次数: |
5914 次 |
最近记录: |