gpt4 book ai didi

polymer - 硫化 : inlineCss not working on Polymer 1. 0 项目

转载 作者:行者123 更新时间:2023-12-02 12:18:06 25 4
gpt4 key购买 nike

我有一个 polymer 1.0 项目,我想要对其进行硫化以进行生产。为此,我将 Gulp 与 gulp-vulcanize 结合使用。

我的gulpfile.js文件:

var gulp = require('gulp');
var Vulcanize = require('gulp-vulcanize');

gulp.task('vulcanize', function () {
return gulp.src('./src/app.html')
.pipe(Vulcanize({
inlineCss: true
}))
.pipe(gulp.dest('./dist'));
});

src/app.html的内容如下:

<!-- Polymer elements -->
<link rel="import" href="../bower_components/google-map/google-map.html" />
<link rel="import" href="../bower_components/iron-icons/iron-icons.html" />
<link rel="import" href="../bower_components/paper-button/paper-button.html" />
<link rel="import" href="../bower_components/paper-drawer-panel/paper-drawer-panel.html" />
<link rel="import" href="../bower_components/paper-icon-button/paper-icon-button.html" />
<link rel="import" href="../bower_components/paper-item/paper-item.html" />
<link rel="import" href="../bower_components/paper-material/paper-material.html" />
<link rel="import" href="../bower_components/paper-menu/paper-menu.html" />
<link rel="import" href="../bower_components/paper-progress/paper-progress.html" />
<link rel="import" href="../bower_components/paper-scroll-header-panel/paper-scroll-header-panel.html" />
<link rel="import" href="../bower_components/paper-toast/paper-toast.html" />
<link rel="import" href="../bower_components/paper-toolbar/paper-toolbar.html" />

问题:该过程没有完成也没有产生错误。

运行gulp vulcanize时的CMD输出:

C:\Stuff\myApp>gulp vulcanize
[15:45:06] Using gulpfile C:\Stuff\myApp\gulpfile.js
[15:45:06] Starting 'vulcanize'...

C:\Stuff\myApp>

但是,当我将 inlineCss 设置为 false 时,该进程确实运行。本例中的 CMD 输出为:

C:\Stuff\myApp>gulp vulcanize
[15:44:55] Using gulpfile C:\Stuff\myApp\gulpfile.js
[15:44:55] Starting 'vulcanize'...
[15:44:55] Finished 'vulcanize' after 581 ms

C:\Stuff\myApp>

但是,显然,CSS 不是内联的。

编辑:

我现在将 vulcanize 作为独立工具运行并收到此错误:

{ [Error: ENOENT, open 'C:\Stuff\myApp\wer_components\paper-drawer-panel\paper-drawer-panel.css']
errno: 34,
code: 'ENOENT',
path: 'C:\\Stuff\\myApp\\wer_components\\paper-drawer-panel\\paper-drawer-panel.css' }
Error: ENOENT, open 'C:\Stuff\myApp\wer_components\paper-drawer-panel\paper-drawer-panel.css'

请注意,它尝试访问 C:\Stuff\myApp\wer_components 文件夹,而不是 C:\Stuff\myApp\bower_components。不知怎的,它在文件夹名称中丢失了 bo ,但我似乎不知道如何。

最佳答案

我已经解决了这个问题,但是解决方案有点不寻常。首先,我阅读了很多有关绝对路径问题的内容,因此我将所有路径从绝对路径更改为相对路径,并提供了 abspath: '' 选项。

但是,这仍然没有解决问题,因为我收到了找不到解析器错误,这也与绝对路径问题有关。

经过一次幸运的猜测,我找到了罪魁祸首 - fonts.googleapis.com

为什么这是一个问题?外部字体和 Google 托管字体的 CSS 包含如下:

<link rel="stylesheet" href="//fonts.googleapis.com/css?family=Roboto:400,300,300italic,400italic,500,500italic,700,700italic">

它们使用无协议(protocol) URL 来保留当前页面的 HTTP(s) 状态。但这种表示法在路径开头有两个斜杠 (//),这在一定程度上混淆了内联过程。它可能将路径视为文件而不是 URL。

因此,gulp 任务的完整修复如下:

var gulp = require('gulp');
var Vulcanize = require('gulp-vulcanize');

gulp.task('vulcanize', function () {
return gulp.src('src/app.html')
.pipe(Vulcanize({
abspath: '',
inlineScripts: true,
inlineCss: true,
stripExcludes: false,
excludes: ['//fonts.googleapis.com/*'],
}))
.pipe(gulp.dest('dist'));
});

希望其他人发现这很有用。

此外,如果有人认为 // 路径问题是一个错误,请报告它。

关于polymer - 硫化 : inlineCss not working on Polymer 1. 0 项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30819435/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com