【问题标题】:Jekyll-Assets: Missing assets when building siteJekyll-Assets:构建网站时缺少资产
【发布时间】:2017-09-28 11:16:19
【问题描述】:

在构建命令上正确导出所有资产时,我正在努力克服 Jekyll-Assets 的奇怪行为。 配置设置为使用带有“文件系统”缓存类型的缓存清除。在构建时,我们会正确获取所有图像和字体。但是在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

【问题讨论】:

    标签: docker docker-compose jekyll dockerfile


    【解决方案1】:

    TL;DR:在构建之前删除 _site 会导致问题。在构建之前删除.jekyll-cache也为我解决了这个问题。

    我对 Jekyll-assets 有非常相似的经历。在开发过程中,_site/assets 文件夹中缺少一些图像。经过一番尝试,我找到了一种重现它的方法。

    1. 签出干净版本的代码
    2. 使用bundle exec Jekyll build 构建
    3. 运行 bundle exec jekyll clean(其中会删除 _site 文件夹)
    4. 再次使用bundle exec Jekyll build 构建

    在这些步骤之后,_site/assets 文件夹中的文件丢失了。除了使用jekyll clean 删除文件夹.jekyll-cache 之外,为我解决了这个问题。我对 jekyll-assets 的了解不够深入,无法理解此文件夹中的缓存是如何工作的,但至少它解决了问题。如果该文件夹被排除在版本控制之外,并且它应该是一个生成的缓存文件夹,您也可以使用git clean -xdf,但要小心,它会删除任何不受版本控制的文件!如果您能根据您的具体情况验证我的解决方案,我将不胜感激。

    很抱歉,我无法为您提供一个真正的解释来解释为什么会发生这种情况,但我希望我的回答能对您有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-08-31
      • 1970-01-01
      • 1970-01-01
      • 2021-06-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-28
      相关资源
      最近更新 更多