У меня настроена горячая перезагрузка и динамическая загрузка моих модулей vuex.
файл store.js - секция горячего обновления
if (module.hot) {
// accept actions and mutations as hot modulesLoader
module.hot.accept([
'./store/modules/index.js',
'./store/helpers/global-actions',
'./store/helpers/global-mutations',
...modulePaths,
// './store/helpers/global-actions',
], () => {
let newModules = require('./store/modules').modules
store.hotUpdate({
actions: require('./store/helpers/global-actions'),
mutations: require('./store/helpers/global-mutations'),
modules: newModules,
})
})
}
файл modules / index.js
const requireModule = require.context('.', true, /index.js$/)
const modules = {}
const modulePaths = []
requireModule.keys().forEach(fileName => {
if (fileName === './index.js') {
modulePaths.push(fileName.replace('./', './store/modules/'))
return
} else {
let moduleName = fileName.match(/(?<=\/)\w*(?=\/)/g)[0]
modulePaths.push(fileName.replace('./', './store/modules/'))
modules[moduleName] =
{
namespaced: false,
...requireModule(fileName),
}
}
})
export {modulePaths, modules}
В основном, этот код выполняет динамическую загрузку папок с файлом index.js в виде модулей (где имя модуля - имя_фолдера).
Если я обновляю действия модуля, или получатели, или мутации, все работает как положено, я получаю новые действия, добавленные вхранить, а также мутации, когда любой из модулей обновляется.
Единственное, что я не могу заставить работать - это изменять состояние модулей при обновлении.Поэтому, если я изменю состояние модулей, оно не будет отражено.Это нормальное поведение?Или я что-то не так делаю?