更新
This commit is contained in:
Generated
Vendored
+59
@@ -0,0 +1,59 @@
|
||||
"use strict";
|
||||
var __importDefault = (this && this.__importDefault) || function (mod) {
|
||||
return (mod && mod.__esModule) ? mod : { "default": mod };
|
||||
};
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.createPublicFileFilter = exports.initStatic = void 0;
|
||||
const fs_1 = __importDefault(require("fs"));
|
||||
const path_1 = __importDefault(require("path"));
|
||||
const debug_1 = __importDefault(require("debug"));
|
||||
const pluginutils_1 = require("@rollup/pluginutils");
|
||||
const uni_cli_shared_1 = require("@dcloudio/uni-cli-shared");
|
||||
const static_1 = require("./middlewares/static");
|
||||
const debugStatic = (0, debug_1.default)('uni:static');
|
||||
/**
|
||||
* devServer时提供static等目录的静态资源服务
|
||||
* @param server
|
||||
* @param param
|
||||
*/
|
||||
const initStatic = (server) => {
|
||||
const filter = createPublicFileFilter();
|
||||
const serve = (0, static_1.uniStaticMiddleware)({
|
||||
etag: true,
|
||||
resolve(pathname) {
|
||||
if (!filter(pathname)) {
|
||||
return;
|
||||
}
|
||||
const filename = path_1.default.join(process.env.UNI_INPUT_DIR, pathname);
|
||||
if (fs_1.default.existsSync(filename)) {
|
||||
debugStatic(filename, 'success');
|
||||
return filename;
|
||||
}
|
||||
else {
|
||||
debugStatic(filename, 'fail');
|
||||
}
|
||||
},
|
||||
});
|
||||
const viteServePublicMiddlewareIndex = server.middlewares.stack.findIndex((middleware) => {
|
||||
return (middleware.handle.name === 'viteServePublicMiddleware');
|
||||
});
|
||||
// 替换 vite 自带的 public middleware
|
||||
if (viteServePublicMiddlewareIndex > -1) {
|
||||
server.middlewares.stack.splice(viteServePublicMiddlewareIndex, 1, {
|
||||
route: '',
|
||||
handle: ((req, res, next) => {
|
||||
if ((0, uni_cli_shared_1.isImportRequest)(req.url) || (0, uni_cli_shared_1.isInternalRequest)(req.url)) {
|
||||
return next();
|
||||
}
|
||||
return serve(req, res, next);
|
||||
}),
|
||||
});
|
||||
}
|
||||
};
|
||||
exports.initStatic = initStatic;
|
||||
function createPublicFileFilter(base = '/') {
|
||||
const publicDir = (0, uni_cli_shared_1.normalizePath)(path_1.default.join(base, uni_cli_shared_1.PUBLIC_DIR + '/**/*'));
|
||||
const uniModulesDir = (0, uni_cli_shared_1.normalizePath)(path_1.default.join(base, 'uni_modules/*/' + uni_cli_shared_1.PUBLIC_DIR + '/**/*'));
|
||||
return (0, pluginutils_1.createFilter)([publicDir, uniModulesDir]);
|
||||
}
|
||||
exports.createPublicFileFilter = createPublicFileFilter;
|
||||
Reference in New Issue
Block a user