Я создаю сайт с Jekyll, который размещаю на страницах GitHub. Я хотел бы иметь возможность установить для JEKYLL_ENV значение «производство» (JEKYLL_ENV=production
) при развертывании на страницах 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 %}
Я прочитал, что GitHub Pages должен автоматически устанавливать JEKYLL_ENV
на production
, но когда я добавляю {{ jekyll.enviornment }}
на свою страницу, я получаю development
как локально, так и на моем размещенном сайте. Возможно, это связано с тем, что я создавал сайт перед развертыванием с помощью этого. и это.
Мой 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
(это уже было написано в этот шаблон). Я видел, что эта команда рекомендуется: $ JEKYLL_ENV=production jekyll build
. Кажется, мне просто нужно изменить мою задачу jekyll-build
, чтобы включить это.
Если есть более простой способ сделать это, я хотел бы услышать его.
Любая помощь приветствуется.
РЕДАКТИРОВАТЬ:
Я попытался включить как _config.yml
, где я установил environment: prod
, так и _config_dev.yml
, где я установил environment: dev
, и обновил свои задачи gulp до:
/**
* 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
.