options.ts 1.9 KB
Newer Older
fxy060608's avatar
fxy060608 已提交
1
import path from 'path'
fxy060608's avatar
fxy060608 已提交
2 3
import type { CompilerOptions } from '@vue/compiler-core'
import { isCustomElement, isNativeTag } from '@dcloudio/uni-shared'
fxy060608's avatar
fxy060608 已提交
4 5
import {
  MiniProgramCompilerOptions,
fxy060608's avatar
fxy060608 已提交
6
  transformMatchMedia,
fxy060608's avatar
fxy060608 已提交
7 8
  transformRef,
} from '@dcloudio/uni-cli-shared'
fxy060608's avatar
fxy060608 已提交
9
import { UniMiniProgramPluginOptions } from '@dcloudio/uni-mp-vite'
fxy060608's avatar
fxy060608 已提交
10 11 12

import source from './project.swan.json'
import { transformFor } from './transforms/vFor'
fxy060608's avatar
fxy060608 已提交
13
import { transformOn } from './transforms/vOn'
fxy060608's avatar
fxy060608 已提交
14
import { transformModel } from './transforms/vModel'
fxy060608's avatar
fxy060608 已提交
15

fxy060608's avatar
fxy060608 已提交
16 17 18 19 20
const nodeTransforms = [transformRef, transformFor, transformMatchMedia]
const directiveTransforms = {
  on: transformOn,
  model: transformModel,
}
fxy060608's avatar
fxy060608 已提交
21 22 23 24 25
export const miniProgram: MiniProgramCompilerOptions = {
  class: {
    array: true,
  },
  slot: {
26
    fallback: true,
fxy060608's avatar
fxy060608 已提交
27
  },
fxy060608's avatar
fxy060608 已提交
28
  directive: 's-',
fxy060608's avatar
fxy060608 已提交
29 30
}

fxy060608's avatar
fxy060608 已提交
31 32 33 34 35 36 37
export const compilerOptions: CompilerOptions = {
  isNativeTag,
  isCustomElement,
  nodeTransforms,
  directiveTransforms,
}

fxy060608's avatar
fxy060608 已提交
38 39
const projectConfigFilename = 'project.swan.json'

fxy060608's avatar
fxy060608 已提交
40
export const options: UniMiniProgramPluginOptions = {
fxy060608's avatar
fxy060608 已提交
41 42
  vite: {
    inject: {
fxy060608's avatar
fxy060608 已提交
43
      uni: [path.resolve(__dirname, 'uni.api.esm.js'), 'default'],
fxy060608's avatar
fxy060608 已提交
44 45
    },
    alias: {
fxy060608's avatar
fxy060608 已提交
46
      'uni-mp-runtime': path.resolve(__dirname, 'uni.mp.esm.js'),
fxy060608's avatar
fxy060608 已提交
47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
    },
    copyOptions: {
      assets: ['swancomponents'],
    },
  },
  global: 'swan',
  app: {
    darkmode: false,
    subpackages: true,
  },
  project: {
    filename: projectConfigFilename,
    source,
  },
  template: {
fxy060608's avatar
fxy060608 已提交
62 63
    /* eslint-disable no-restricted-syntax */
    ...miniProgram,
fxy060608's avatar
fxy060608 已提交
64
    filter: {
fxy060608's avatar
fxy060608 已提交
65
      extname: '.sjs',
fxy060608's avatar
fxy060608 已提交
66 67 68 69 70 71
      lang: 'sjs',
      generate(filter, filename) {
        if (filename) {
          return `<import-sjs src="${filename}.sjs" module="${filter.name}"/>`
        }
        return `<import-sjs module="${filter.name}">
fxy060608's avatar
fxy060608 已提交
72 73
  ${filter.code}
  </import-sjs>`
fxy060608's avatar
fxy060608 已提交
74 75 76
      },
    },
    extname: '.swan',
fxy060608's avatar
fxy060608 已提交
77
    compilerOptions,
fxy060608's avatar
fxy060608 已提交
78 79 80 81 82
  },
  style: {
    extname: '.css',
  },
}