Jekyll-Assets:构建网站

时间:2017-09-28 11:16:20

标签: docker docker-compose jekyll dockerfile

在构建命令中正确导出所有资产时,我正在努力克服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

1 个答案:

答案 0 :(得分:0)

TL; DR:在构建之前删除_site会导致问题。同样在构建之前删除.jekyll-cache可以为我解决问题。

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

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

完成这些步骤后,我在_site/assets文件夹中缺少文件。除了使用jekyll clean删除文件夹.jekyll-cache之外,为我解决问题的还有。我对jekyll-assets的了解不够深,以了解此文件夹中的缓存如何工作,但至少可以解决该问题。如果该文件夹未包含在版本控制中,并且应该是已生成的缓存文件夹,则也可以使用git clean -xdf,但请注意,它会删除任何不受版本控制的文件!如果您能根据具体情况验证我的解决方案,将不胜感激。

很抱歉,我无法为您提供发生这种情况的真实解释,但是我希望我的回答仍然可以为您提供帮助。