赞
踩
const reg = /^\/@modules\// const path = require('path') const fs = require('fs').promises function moduleResolvePlugin({app, root}){ app.use(async(ctx,next)=>{ // 如果没有匹配到/@modules/vue,就往下执行就行啦 if(!reg.test(ctx.path)){ return next() } const id = ctx.path.replace(reg, '') let mapping={ // 就是它找的路径就是我们真实的VUE依赖的路径 vue: path.resolve(root,'node_modules','@vue/runtime-dom/dist/runtime-dom.esm-bundler.js') } const content = await fs.readFile(mapping[id],'utf-8') ctx.type = 'js' ctx.body = content }) } exports.moduleResolvePlugin = moduleResolvePlugin
const Koa = require('koa') const reWritePlugin = require('./serverPluginModuleRewrite') const {moduleResolvePlugin} = require('./serverPluginModuleResolve') const staticPlugin = require('./serverPluginServerStatic') function createServer() { let app = new Koa() // 实现静态服务功能,访问我们的服务器可以返回对应的文件koa-Static const context = { // 创建一个上下文,给不同插件共享功能 app, root: process.cwd() // 这个目录就在vite-vue } const resolvePlugin = [ moduleResolvePlugin,// 2.解决http://localhost:8088/@modules/vue请求问题 reWritePlugin, // 重写请求路径插件 ,为什么这么写这个顺序呢,原因解释放到插件里吧~~ staticPlugin, // 1.静态服务插件 ] resolvePlugin.forEach(plugin => plugin(context)) return app } createServer().listen(8088, () => { console.log('xiaojin server is start at 8088') console.log('修改代码跑一把') })
欢迎大家指出文章需要改正之处~
学无止境,合作共赢
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。