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

时间:2018-09-03 13:16:17

标签: angular angular-cli angular-components bundling-and-minification

有没有办法以角度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
   }
}

1 个答案:

答案 0 :(得分:3)

正如@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'));