gulp-livereload через https?

Я использую расширение livereload для Chrome, которое вставляет http://[...]/livereload.js в документ. К сожалению, я работаю над проектом, для которого требуется https, и я ожидал, что воспроизведу это локально, но мне не обязательно это делать, поскольку я могу изменить протокол для разных сред, но мне интересно, можно ли установить gulp -livereload для загрузки через https вместо этого?

Я пробовал кое-что, например, безуспешно добавлял скрипт вручную, так как получаю сообщение об ошибке подключения (GET https://127.0.0.1:35729/livereload.js?snipver=1 net::ERR_CONNECTION_CLOSED):

var script = document.createElement('script');
script.type = 'text/javascript';
script.src = 'https://127.0.0.1:35729/livereload.js?snipver=1';
document.getElementsByTagName('body')[0].appendChild(script)

person punkbit    schedule 23.04.2015    source источник


Ответы (2)


У меня в голове два решения:

1. Разместите клиент самостоятельно

https://github.com/livereload/livereload-js

Установите его как зависимость:

bower install livereload-js --save-dev

or

npm install livereload-js --save

Затем просто включите его, как обычный скрипт. Однако помните об этих предостережениях.

/path/to/dist/livereload.js?host=localhost

2. Проксируйте клиентский скрипт

Это довольно сложно, но это определенно сработает. Создайте HTTPS-сервер в вашем gulpfile (возможно, в задаче просмотра).

https://github.com/nodejitsu/node-http-proxy

https://github.com/nodejitsu/node-http-proxy#using-https

httpProxy.createServer({
  ssl: {
    key: fs.readFileSync('valid-ssl-key.pem', 'utf8'),
    cert: fs.readFileSync('valid-ssl-cert.pem', 'utf8')
  },
  target: 'https://localhost:35729',
  secure: true // Depends on your needs, could be false.
}).listen(443);

Затем вы можете сослаться на проксируемый скрипт.

https://127.0.0.1:443/livereload.js?snipver=1
person Austin Pray    schedule 02.05.2015

Хотя это и не указано в документах API, добавление параметров ключа/сертификата работает.

gulp.task('run-reload-server', function() {
  livereload.listen({
    host: "my.domain.com",
    port: 35729,
    key: fs.readFileSync(path.join(__dirname, 'livereload.key'), 'utf-8'),
    cert: fs.readFileSync(path.join(__dirname, 'livereload.crt'), 'utf-8'),
  });
});
person Ben Mirkhah    schedule 12.10.2017