32 lines
		
	
	
		
			824 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			32 lines
		
	
	
		
			824 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| const hotReloadAPIPath = JSON.stringify(require.resolve('vue-hot-reload-api'))
 | |
| 
 | |
| const genTemplateHotReloadCode = (id, request) => {
 | |
|   return `
 | |
|     module.hot.accept(${request}, function () {
 | |
|       api.rerender('${id}', {
 | |
|         render: render,
 | |
|         staticRenderFns: staticRenderFns
 | |
|       })
 | |
|     })
 | |
|   `.trim()
 | |
| }
 | |
| 
 | |
| exports.genHotReloadCode = (id, functional, templateRequest) => {
 | |
|   return `
 | |
| /* hot reload */
 | |
| if (module.hot) {
 | |
|   var api = require(${hotReloadAPIPath})
 | |
|   api.install(require('vue'))
 | |
|   if (api.compatible) {
 | |
|     module.hot.accept()
 | |
|     if (!api.isRecorded('${id}')) {
 | |
|       api.createRecord('${id}', component.options)
 | |
|     } else {
 | |
|       api.${functional ? 'rerender' : 'reload'}('${id}', component.options)
 | |
|     }
 | |
|     ${templateRequest ? genTemplateHotReloadCode(id, templateRequest) : ''}
 | |
|   }
 | |
| }
 | |
|   `.trim()
 | |
| }
 |