首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Google-CDN不改变CDN的路径,将其留在bower_components上。

Google-CDN不改变CDN的路径,将其留在bower_components上。
EN

Stack Overflow用户
提问于 2016-03-01 23:55:02
回答 1查看 262关注 0票数 0

我正试图通过Gulp运行google插件,以便在我的HTML文件中隐藏对CDN的引用。Gulp google-cdn不做任何事情,并且启用调试,如:google-cdn Could not find satisfying version for angular-material ^1.0.5

我的任务(我使用一个子目录,每个文件都有任务):

代码语言:javascript
复制
gulp.task('HTML:Release', function() {
    return gulp.src('../src/*.html')
        .pipe(googleCdn(require('../bower.json')))
        .pipe(gulp.dest('../dist/') )
    ;
});

HTML:

代码语言:javascript
复制
<!DOCTYPE html>
<html ng-app="OntarioDarts" ng-cloak lang="en">
<head>
</head>
<body layout="row" ng-cloak>
    <div layout="column" class="relative" layout-fill role="main">
        <md-content flex md-scroll-y>
            <ng-view></ng-view>
        </md-content>
    </div>
</body>


<!-- Load JavaScript Last for Speed. Load from CDN for cache speed -->
<!-- Angular JS -->
<script src="bower_components/angular/angular.js"></script>
<script src="bower_components/angular-material/angular-material.min.js"></script>
<script src="bower_components/angular-material-icons/angular-material-icons.min.js"></script>

分发文件不指向CDN,但仍然尝试使用bower_components,尽管它没有抱怨没有找到文件。

我发现的一个问题是,在我的bower.json中,角设置为^1.5.0。但是,我只使用默认的Google,它目前没有1.5.0可用。我将bower.json文件中的版本更改为^1.4.0,然后将该文件更改为使用1.4.7版本的CDN。

但问题是,引用并没有被更改为HTTPS://,而是简单地作为src="//ajax.googleapis.com/ajax/libs/angularjs/1.4.7/angular.min.js"保留下来。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-03-02 07:23:03

Gulp google-cdn不做任何事情,并且启用调试,如:google-cdn Could not find satisfying version for angular-material ^1.0.5

这是因为Google 是1.0.4提供的最新版本。

但问题是,引用并没有被更改为HTTPS://,而是简单地作为src="//ajax.googleapis.com/ajax/libs/angularjs/1.4.7/angular.min.js"保留下来。

这不一定是个问题。那是一个协议-相对URL。如果您的页面是通过HTTP提供的,则通过HTTP获取angular.min.js。如果您的页面是通过HTTPS服务的,那么angular.min.js将从HTTPS中获取。

除非您绝对需要在HTTPS上始终获取angular.min.js,否则您可以就这样离开它。

编辑: ..。除非您试图在浏览器中打开本地HTML文件。然后您的协议是file://,协议相对URL将引用您的本地文件系统。当然也无处可寻。

解决此问题的一种方法是通过本地运行的way服务器(例如,使用gulp-webserver)为您的html文件提供服务。当您的HTML页面来自例如http://localhost:8000/时,所有的协议相关URL也将通过http://提供。

如果您只希望所有CDN都以https://作为前缀,下面是包装google数据对象以实现此目的的一种方法:

代码语言:javascript
复制
var gulp = require('gulp');
var googleCdn = require('gulp-google-cdn');
var jp = require('jsonpath');

function protocol(proto, cdn) {
    jp.apply(cdn, '$.*.url', function(url) {
        return function(version) {
            return proto + url(version);
        };
    });
    return cdn;
}

gulp.task('HTML:Release', function() {
    return gulp.src('../src/*.html')
        .pipe(googleCdn(require('./bower.json'), {
             cdn: protocol('https:', require('google-cdn-data'))
         }))
        .pipe(gulp.dest('../dist/') );
});

您需要运行npm install --save-dev google-cdn-data jsonpath才能使其工作。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35735980

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档