ОБНОВЛЕНИЕ
Я закончил тем, что представил PR в ужасный проект , чтобы выполнить sh, что я пытался сделать здесь. Обновлю этот вопрос, если он будет принят. В то же время вы можете просматривать изменения, которые я сделал в моем форке проекта.
Фон
При выполнении локальной разработки мне нравится настраивать SSL в соответствии с моим производством. окружающая среда как можно ближе. Для типичного проекта Vue. js я выполняю sh следующим образом:
- В root проекта установите локальный сертификат с
mkcert example.test
- Обновите мой
hosts
файл для сопоставления 127.0.0.1
(localhost) до example.test
:
# /etc/hosts
127.0.0.1 example.test
Обновите конфигурацию веб-пакета в
vue.config.js
, чтобы использовать сертификат следующим образом:
// vue.config.js
const fs = require('fs')
module.exports = {
configureWebpack: config => {
if (process.env.NODE_ENV !== 'production') {
config.devServer = {
disableHostCheck: true,
host: 'example.test',
https: {
key: fs.readFileSync('./example.test-key.pem', 'utf8'),
cert: fs.readFileSync('./example.test.pem', 'utf8'),
},
}
}
},
}
При этой настройке при запуске npm run serve
я могу просматривать свой сайт по адресу https://example.test
Моя цель
Я хотел бы получить аналогичные настройки конфигурации для проекта Gridsome , но пока ничего не пробовал похоже, начинает действовать.
То, что я пробовал
Вот что я пробовал до сих пор, что не сработало:
Попытка # 1: Обновление конфигурации веб-пакета в gridsome.config.js
Я попытался обновить файл gridsome.config.js
, чтобы он выглядел следующим образом:
const fs = require('fs')
module.exports = {
siteName: 'Example',
siteUrl: 'example.test',
plugins: [],
configureWebpack: config => {
if (process.env.NODE_ENV !== 'production') {
config.devServer = {
disableHostCheck: true,
host: 'example.test',
https: {
key: fs.readFileSync('./example.test-key.pem', 'utf8'),
cert: fs.readFileSync('./example.test.pem', 'utf8'),
},
}
}
return config
},
}
Это, похоже, никак не повлияло.
Попытка # 2: обновить конфигурацию веб-пакета в gridsome.server.js
Аналогичным образом я попытался сделать нечто подобное в gridsome.server.js
:
const fs = require('fs')
module.exports = function (api) {
api.configureWebpack({
devServer: {
disableHostCheck: true,
host: 'example.test',
https: {
key: fs.readFileSync('./example.test-key.pem', 'utf8'),
cert: fs.readFileSync('./example.test.pem', 'utf8'),
},
}
})
}
Попытка # 3: Изменить Express config
Другие люди, похоже, сталкивались с аналогичными проблемами при изменении конфигурации dev-сервера Gridsome . При ближайшем рассмотрении выясняется, что Gridsome использует Express вместо внутреннего сервера разработки веб-пакетов. Doh! Это помогает, если вы пытаетесь настроить правильный сервер. Я попытался изменить gridsome.server.js
следующим образом:
const fs = require('fs')
const https = require('https')
module.exports = function (api) {
api.configureServer(app => {
// create an HTTPS server
const server = https.createServer({
key: fs.readFileSync('./example.test-key.pem', 'utf8'),
cert: fs.readFileSync('./example.test.pem', 'utf8'),
}, app)
// start it up
server.listen(8080)
})
}
Хотя я могу подтвердить, что эта функция запускается, Внутренняя конфигурация сервера Gridsome не содержит каких-либо перехватчиков, которые позволили бы что-то подобное работать так, как я надеялся.
Другая информация, Мысли и др. c.
Я попробовал изменения конфигурации веб-пакета как со стилем функции, так и со стилем объекта (как в примерах выше) в обоих местах. Я могу заставить Gridsome распознать мой хост, используя флаг, когда я запускаю dev-сервер (то есть gridsome develop --host example.test
).
Мне кажется, что то, что я пытаюсь сделать, не возможный. Кто-нибудь знает по-другому? Спасибо !!!