我正试图通过Gulp运行google插件,以便在我的HTML文件中隐藏对CDN的引用。Gulp google-cdn不做任何事情,并且启用调试,如:google-cdn Could not find satisfying version for angular-material ^1.0.5。
我的任务(我使用一个子目录,每个文件都有任务):
gulp.task('HTML:Release', function() {
return gulp.src('../src/*.html')
.pipe(googleCdn(require('../bower.json')))
.pipe(gulp.dest('../dist/') )
;
});HTML:
<!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"保留下来。
发布于 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数据对象以实现此目的的一种方法:
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才能使其工作。
https://stackoverflow.com/questions/35735980
复制相似问题