Я создаю сайт с Jekyll, который я размещаю на страницах GitHub. Я хотел бы быть в состоянии установить JEKYLL_ENV к 'производству' (JEKYLL_ENV=production
) при развертывании на GitHub Pages, так что я могу сделать что-то вроде этого:Настройка среды Jekyll для GitHub Страницы
{% if jekyll.environment == "production" %}
{% include googleAnalytics.html %}
{% endif %}
и
{% if jekyll.environment == "production" %}
<link rel="stylesheet" href="/assets/css/main.min.css">
{% else %}
<link rel="stylesheet" href="/assets/css/main.css">
{% endif %}
Теперь, I» что GitHub Pages автоматически устанавливает JEKYLL_ENV
в production
, но когда я бросаю {{ jekyll.enviornment }}
на свою страницу, я получаю development
как локально, так и на моем размещенном сайте. Возможно, это связано с тем, что я строил сайт до развертывания с использованием this и this.
Мои gulpfile.js
var gulp = require('gulp');
var ghPages = require('gulp-gh-pages');
var browserSync = require('browser-sync');
var sass = require('gulp-sass');
var prefix = require('gulp-autoprefixer');
var minifyCss = require('gulp-minify-css');
var rename = require('gulp-rename');
var cp = require('child_process');
...
/**
* Build the Jekyll Site
*/
gulp.task('jekyll-build', function (done) {
browserSync.notify(messages.jekyllBuild);
return cp.spawn('jekyll', ['build'], {stdio: 'inherit'})
.on('close', done);
});
...
/**
* Deploy to gh-pages
*/
gulp.task('deploy', ['jekyll-build'], function() {
return gulp.src('./_site/**/*')
.pipe(ghPages());
});
По сути, когда я бегу gulp deploy
, я беру каталог _site
и подтолкнуть ее к gh-pages
отрасли.
Я не знаю, если это является причиной окружающей среды должен быть установлен в development
или что, но то, что я имею в виду делать это вместо запуска jekyll-build
задачи в deploy
задачи создания и запуска новой jekyll-build-prod
задачу, устанавливает JEKYLL_ENV
на production
.
В этой проблеме я столкнулся. Я не уверен, как настроить среду, используя child_process
spawns
(она уже была написана в this шаблоном). Я видел эту команду, рекомендованную: $ JEKYLL_ENV=production jekyll build
. Мне просто нужно изменить мою задачу jekyll-build
, чтобы включить ее.
Если есть более простой способ сделать это, я бы хотел его услышать.
Любая помощь приветствуется.
EDIT:
Я попытался в то числе как в _config.yml
, где я поставил environment: prod
и _config_dev.yml
где я поставил environment: dev
и обновление моего глотка задачи:
/**
* Build the Jekyll Site
*/
gulp.task('jekyll-build', function (done) {
browserSync.notify(messages.jekyllBuild);
return cp.spawn('jekyll', ['build', '--config', '_config.yml,_config_dev.yml'], {stdio: 'inherit'})
.on('close', done);
});
/**
* Build the Jekyll Site for production
*/
gulp.task('jekyll-build-prod', function (done) {
browserSync.notify(messages.jekyllBuild);
return cp.spawn('jekyll', ['build', '--config', '_config.yml'], {stdio: 'inherit'})
.on('close', done);
});
Однако, когда я запускаю задачу развернуть и проверьте размещенный сайт, он по-прежнему говорит, что environment
- development
.
Даже если я включаю environment: prod
как в _config.yml
, так и в _config_dev.yml
, он все еще говорит development
.
Вы правы, это действительно работает. Однако мне нравилось, как «gulp-gh-pages» только толкали содержимое папки '_site' в ветку' gh-pages'. Это сделало его намного чище. Если я не смогу понять, как это сделать по-другому, мне придется это сделать. – user2909019