在构建命令中正确导出所有资产时,我正在努力克服Jekyll-Assets的奇怪行为。
配置设置为使用cachebusting和“文件系统”缓存类型。在构建时,我们正确地获得所有图像和字体。但是在其中一个scss
文件中,似乎随机导出了字体和图像(有时是,有时则没有)。如果未导出文件,则使用css编写的路径是正确的,其中包含cachebust的哈希值。
在尝试通过删除.assets-cache
和_site/
文件夹进行调试时,我注意到随机内容变得更加频繁。
这是配置
开发环境(Docker容器):
version: '3'
services:
jekyll:
build: .
command: jekyll build --watch --incremental
volumes:
- .:/usr/src/app
nginx:
image: nginx:stable-alpine
volumes:
- ./_site:/usr/share/nginx/html
ports:
- 8080:80
depends_on:
- jekyll
开发环境(Dockerfile):
FROM ruby:2.4.1-stretch
RUN apt-get update -qq && \
apt-get install -y build-essential
RUN mkdir /usr/src/app
WORKDIR /usr/src/app
ADD Gemfile /usr/src/app
ADD Gemfile.lock /usr/src/app
RUN gem install bundle && \
bundle && \
bundle install
Jekyll配置(Gemfile):
gem "jekyll", "3.5.1"
group :jekyll_plugins do
# gem "html-proofer"
#gem "jekyll-redirect-from"
gem "jekyll-assets"
gem "coffee-script"
gem "uglifier"
gem "sass"
gem "therubyracer"
gem "less"
gem "jekyll-feed"
gem "jekyll-paginate-v2"
gem "jekyll-last-modified-at"
gem "jekyll-sitemap"
gem "jekyll-minifier"
end
项目配置(_config.yml):
assets:
digest: true
compress:
css: true
js: uglifier
autoprefixer:
browsers:
- "> 1%"
- "last 3 versions"
- "IE > 9"
prefix: "/assets"
sources:
- _assets/
- _assets/js
- _assets/css
- _assets/javascript
- _assets/stylesheets
- _assets/img
- _assets/fonts
答案 0 :(得分:0)
TL; DR:在构建之前删除_site
会导致问题。同样在构建之前删除.jekyll-cache
可以为我解决问题。
我在Jekyll-assets上经历了非常相似的经历。在开发过程中,发生_site/assets
文件夹中缺少某些图像的情况。经过一番尝试后,我找到了一种再现它的方法。
bundle exec Jekyll build
bundle exec jekyll clean
(除_site文件夹外,还会删除它)bundle exec Jekyll build
构建完成这些步骤后,我在_site/assets
文件夹中缺少文件。除了使用jekyll clean
删除文件夹.jekyll-cache
之外,为我解决问题的还有。我对jekyll-assets的了解不够深,以了解此文件夹中的缓存如何工作,但至少可以解决该问题。如果该文件夹未包含在版本控制中,并且应该是已生成的缓存文件夹,则也可以使用git clean -xdf
,但请注意,它会删除任何不受版本控制的文件!如果您能根据具体情况验证我的解决方案,将不胜感激。
很抱歉,我无法为您提供发生这种情况的真实解释,但是我希望我的回答仍然可以为您提供帮助。