我遇到了很多问题,因为我的应用程序托管在子文件夹中,因此/assets/
文件中引用的相对.scss
路径不起作用。
解决方案是启用--rebaseRootRelativeCssUrls
选项以获取预期的行为。使用该选项,构建过程通过注入“ --base-href”值来调整了我的/assets/
路径,现在已正确加载了引用的图像和字体。
但是,我在文档中看到该选项已被弃用,它将在下一个主要版本中删除。
https://angular.io/cli/build(搜索--rebaseRootRelativeCssUrls
)
所以我的问题是,还有什么选择,还有其他方法可以得到相同的结果吗?
答案 0 :(得分:0)
在angular.json中,您可以设置多个资产文件夹
struct ActivityBreak : View {
var myId: Int
@EnvironmentObject var model : ModelClockToggle
@State private var booted: Bool = false
// Beta 4
let anim1 = Animation.easeInOut(duration: 1.0).repeatCount(Int.max)
let noAni = Animation.easeInOut(duration: 0.2).repeatCount(0)
// Beta 3
// let anim1 = Animation.basic(duration: 1.0, curve: .easeInOut).repeatCount(Int.max)
// let noAni = Animation.basic(duration: 0.2, curve: .easeInOut).repeatCount(0)
var body: some View {
return Circle()
.foregroundColor(.red)
.scaleEffect(!booted ? 0.6 : self.model.amIRunning(clock: self.myId) ? 1.0 : 0.6)
.animation( self.model.amIRunning(clock: self.myId) ? anim1 : noAni )
.tapAction {
self.model.toggle(clock: self.myId)
}
.onAppear {
self.booted = true
}
}
}
这使您可以拥有多个资产文件夹。
答案 1 :(得分:0)
根据发行说明,建议的过渡方法是在.scss文件中使用相对URL。在我看来,这似乎是个坏主意。这是开发团队针对记录此问题的错误的评论。
https://github.com/angular/angular-cli/issues/14587#issuecomment-497368020
答案 2 :(得分:0)
我是这样通过使用路径解决的:
background-image: url('../../../assets/images/icon.png');
而不是这样:
background-image: url('/src/assets/images/img.png');
答案 3 :(得分:-1)
如果您的项目部署在子文件夹中,则可以将该信息传递给build
命令
我建议您看看--base-href
在开发中,通常在以下目录中启动服务器: 拥有index.html。那是根文件夹,您将添加 在index.html顶部附近,因为/是应用程序的根。
但是在共享或生产服务器上,您可以通过 子文件夹。例如,当加载应用程序的网址是 mysite.com/my/app/,子文件夹为my / app /,您应该 添加到服务器版本的index.html。
您可以使用以下命令修改生产基础href:
ng build --prod --base-href /subfolder/
您还可以将base-href设置为./
,这表示当前目录与/
相对,后者代表根目录。
另一种可能的解决方案是更改主href
中的index.html
<base href="./">