Заменить относительные ссылки CSS на абсолютные в gulp для приложения ASP.NET Core - PullRequest
0 голосов
/ 22 сентября 2019

У меня есть проект ASP.NET Core MVC, который объединяет общие ресурсы, такие как css / js, которые требовались для нескольких проектов.Поскольку эти проекты имеют разные URL, мне нужно установить абсолютные URL для всех ресурсов, таких как url() ссылки в css.Например шрифты.

Пробовал разные плагины gulp, но ни один из них не работает с gulp.Например, gulp-ex-css-url-adjuster:

const cssBundles = [{
    sourceFiles: ['ClientScript/Scss/Index.scss'],
    targetFile: 'shared-theme.css'
}]
gulp.src(bundle.sourceFiles)
    .pipe(sass())
    .pipe(urlAdjuster({
        prependRelative: 'http://localhost:5001/'
    }))
    .pipe(cssMin())
    .pipe(concat(bundle.targetFile))
    .pipe(gulp.dest(cssTargetDir))

Index.scss импортирует шрифты, например

@font-face {
    font-family: 'Roboto';
    font-style: normal;
    font-weight: 300;
    src: url('/fonts/roboto/roboto-v20-latin-300.eot'); /* IE9 Compat Modes */
    src: local('Roboto Light'), local('Roboto-Light'), url('/fonts/roboto/roboto-v20-latin-300.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
    url('/fonts/roboto/roboto-v20-latin-300.woff2') format('woff2'), /* Super Modern Browsers */
    url('/fonts/roboto/roboto-v20-latin-300.woff') format('woff'), /* Modern Browsers */
    url('/fonts/roboto/roboto-v20-latin-300.ttf') format('truetype'), /* Safari, Android, iOS */
    url('/fonts/roboto/roboto-v20-latin-300.svg#Roboto') format('svg'); /* Legacy iOS */
}

Моя цель переписать /fonts/roboto/roboto-v20-latin-300.eot в http://localhost:5001/fonts/roboto/roboto-v20-latin-300.eot.Но приведенный выше код gulp js создает неправильные URL:

@font-face{
    font-family:Roboto;
    font-style:normal;
    font-weight:300;
    src:url(http:\localhost:5001\fonts\roboto\roboto-v20-latin-300.eot);
    src:local("Roboto Light"),local("Roboto-Light"),url(http:\localhost:5001\fonts\roboto\roboto-v20-latin-300.eot) format("embedded-opentype"),url(http:\localhost:5001\fonts\roboto\roboto-v20-latin-300.woff2) format("woff2"),url(http:\localhost:5001\fonts\roboto\roboto-v20-latin-300.woff) format("woff"),url(http:\localhost:5001\fonts\roboto\roboto-v20-latin-300.ttf) format("truetype"),url(http:\localhost:5001\fonts\roboto\roboto-v20-latin-300.svg) format("svg")
}

Это было бы правильно, за исключением того, что он странным образом вставляет \ вместо / в качестве разделителя.Пробовал http:\/\/localhost:5001\/, http:////localhost:5001 и некоторые похожие варианты,

...