Как получить минимизированное имя файла js / css в angular 2 (v.6) - PullRequest
0 голосов
/ 03 сентября 2018

Есть ли способ программно получить минимизированное имя файла в 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
   }
}

1 Ответ

0 голосов
/ 03 сентября 2018

Как отметил @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'));
...