99 lines
4.0 KiB
JavaScript
99 lines
4.0 KiB
JavaScript
"use strict";
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
exports.uniMiniProgramPlugin = void 0;
|
|
const uni_cli_shared_1 = require("@dcloudio/uni-cli-shared");
|
|
const uni_1 = require("./uni");
|
|
const build_1 = require("./build");
|
|
const configResolved_1 = require("./configResolved");
|
|
const template_1 = require("./template");
|
|
const pagesJson_1 = require("../plugins/pagesJson");
|
|
const polyfill_1 = require("./polyfill");
|
|
function uniMiniProgramPlugin(options) {
|
|
const { vite: { alias, copyOptions }, template, style, } = options;
|
|
let nvueCssEmitted = false;
|
|
let resolvedConfig;
|
|
(0, polyfill_1.rewriteCompileScriptOnce)();
|
|
(0, polyfill_1.rewriteCompilerSfcParseOnce)();
|
|
return {
|
|
name: 'uni:mp',
|
|
uni: (0, uni_1.uniOptions)({
|
|
copyOptions,
|
|
customElements: template.customElements,
|
|
miniProgram: {
|
|
event: template.event,
|
|
class: template.class,
|
|
filter: template.filter ? { lang: template.filter.lang } : undefined,
|
|
directive: template.directive,
|
|
lazyElement: template.lazyElement,
|
|
component: template.component,
|
|
emitFile: template_1.emitFile,
|
|
slot: template.slot,
|
|
},
|
|
compilerOptions: template.compilerOptions,
|
|
}),
|
|
config() {
|
|
return {
|
|
base: '/',
|
|
resolve: {
|
|
alias: {
|
|
vue: (0, uni_cli_shared_1.resolveBuiltIn)('@dcloudio/uni-mp-vue'),
|
|
'@vue/devtools-api': (0, uni_cli_shared_1.resolveBuiltIn)('@dcloudio/uni-mp-vue'),
|
|
'vue-i18n': (0, uni_cli_shared_1.resolveVueI18nRuntime)(),
|
|
...alias,
|
|
},
|
|
preserveSymlinks: true,
|
|
},
|
|
css: {
|
|
postcss: {
|
|
plugins: (0, uni_cli_shared_1.initPostcssPlugin)({
|
|
uniApp: (0, uni_cli_shared_1.parseRpx2UnitOnce)(process.env.UNI_INPUT_DIR, process.env.UNI_PLATFORM),
|
|
}),
|
|
},
|
|
},
|
|
optimizeDeps: {
|
|
disabled: true,
|
|
},
|
|
build: (0, build_1.buildOptions)(),
|
|
};
|
|
},
|
|
configResolved(config) {
|
|
resolvedConfig = config;
|
|
return (0, configResolved_1.createConfigResolved)(options)(config);
|
|
},
|
|
generateBundle() {
|
|
if (template.filter) {
|
|
const extname = template.filter.extname;
|
|
const filterFiles = (0, template_1.getFilterFiles)(resolvedConfig, this.getModuleInfo);
|
|
Object.keys(filterFiles).forEach((filename) => {
|
|
const { code } = filterFiles[filename];
|
|
this.emitFile({
|
|
type: 'asset',
|
|
fileName: filename + extname,
|
|
source: code,
|
|
});
|
|
});
|
|
}
|
|
const templateFiles = (0, template_1.getTemplateFiles)(template);
|
|
Object.keys(templateFiles).forEach((filename) => {
|
|
this.emitFile({
|
|
type: 'asset',
|
|
fileName: filename + template.extname,
|
|
source: templateFiles[filename],
|
|
});
|
|
});
|
|
if (!nvueCssEmitted) {
|
|
const nvueCssPaths = (0, pagesJson_1.getNVueCssPaths)(resolvedConfig);
|
|
if (nvueCssPaths && nvueCssPaths.length) {
|
|
nvueCssEmitted = true;
|
|
this.emitFile({
|
|
type: 'asset',
|
|
fileName: 'nvue' + style.extname,
|
|
source: (0, uni_cli_shared_1.genNVueCssCode)((0, uni_cli_shared_1.parseManifestJsonOnce)(process.env.UNI_INPUT_DIR)),
|
|
});
|
|
}
|
|
}
|
|
},
|
|
};
|
|
}
|
|
exports.uniMiniProgramPlugin = uniMiniProgramPlugin;
|