如何在 angular 2 (v.6) 中获取缩小的 js/css 文件名

How to get minified js/css file name in angular 2 (v.6)

有没有办法在 angular 6 中以编程方式获取缩小的文件名?

示例:在 ng 构建之后,它生成如下内容:

styles.ec7286a7eee694c180a3.css

在我的组件中,我希望能够获得该特定名称:

@Component({
  selector: 'app-get-style',
  templateUrl: './get-style.component.html',
  styleUrls: ['./get-style.component.scss']
})
export class GetStyleComponent implements OnInit {
   ngOnInit() {
     //get the minified file name
     // alert -> styles.ec7286a7eee694c180a3.css
   }
}

正如@Alexus 在评论中指出的那样,文件名是在构建过程中生成的,因此除了在运行时检查所有 css/js 文件之外,您无法知道它。

否则,您可以尝试在构建过程中删除输出散列 (ng build --output-hashing=none)

动态识别给定 js/css 文件的示例:

js文件

let nameToFind = 'styles';
//get all script tags (change to 'styles' if needed)
let scriptTags = [].slice.call(document.getElementsByTagName('script'));

//filter to get tag whose src attribute starts with styles
let targetElt= scriptTags.filter(c => c.hasAttribute('src') && 
               c.getAttribute('src').startsWith(nameToFind))[0];

console.log(targetElt.getAttribute('src'));

css 文件

let nameToFind = 'styles';
let linkTags = [].slice.call(document.getElementsByTagName('link'));
let targetElt= linkTags .filter(c => c.hasAttribute('href') && 
               c.getAttribute('href').startsWith(nameToFind))[0];

console.log(targetElt.getAttribute('href'));