提交 4b6505e2 编写于 作者: fxy060608's avatar fxy060608

feat(easycom): support uni_modules

上级 b4b23e70
......@@ -2,12 +2,13 @@ import path from 'path'
import slash from 'slash'
import { UserConfig } from 'vite'
import { VitePluginUniResolvedOptions } from '..'
import { FEATURE_DEFINES } from '../utils'
import { FEATURE_DEFINES, initEasycoms } from '../utils'
export function createBuild(
options: VitePluginUniResolvedOptions,
features: FEATURE_DEFINES
): UserConfig['build'] {
initEasycoms(options.inputDir)
return {
polyfillDynamicImport: features.__UNI_FEATURE_PAGES__,
rollupOptions: {
......
import path from 'path'
import fs from 'fs-extra'
import { UserConfig } from 'vite'
import autoprefixer from 'autoprefixer'
import { VitePluginUniResolvedOptions } from '..'
import { uniapp } from '../utils'
function resolveAdditionalData(inputDir: string) {
const uniScssFile = path.resolve(inputDir, 'uni.scss')
if (!fs.existsSync(uniScssFile)) {
return ''
}
return fs.readFileSync(uniScssFile, 'utf8')
}
export function createCss(
options: VitePluginUniResolvedOptions
): UserConfig['css'] {
......@@ -14,7 +24,9 @@ export function createCss(
],
},
preprocessorOptions: {
scss: {},
scss: {
additionalData: resolveAdditionalData(options.inputDir),
},
},
}
}
......@@ -8,7 +8,7 @@ import { UniPluginFilterOptions } from '.'
const debugScoped = debug('uni:scoped')
const SCOPED_RE = /<style\s[^>]*scoped[^>]*>/gi
const SCOPED_RE = /<style\s[^>]*scoped[^>]*>/i
function addScoped(code: string) {
if (SCOPED_RE.test(code)) {
......
import path from 'path'
import { ViteDevServer } from 'vite'
import { VitePluginUniResolvedOptions } from '..'
import { debugEasycom, initEasycom } from '../utils'
function initEasycoms(inputDir: string) {
const dirs = ['components'].map((dir) => path.resolve(inputDir, dir))
const easycomOptions = { dirs, rootDir: inputDir }
initEasycom(easycomOptions)
debugEasycom(easycomOptions)
return {
dirs,
refresh() {
initEasycom(easycomOptions)
},
}
}
import { initEasycoms } from '../utils'
export const serveEasycom = (
server: ViteDevServer,
......
......@@ -31,7 +31,42 @@ function clearEasycom() {
easycomsInvalidCache.clear()
}
export function initEasycom({
export function initEasycoms(inputDir: string) {
const dirs = ['components']
.map((dir) => path.resolve(inputDir, dir))
.concat(initUniModulesEasycomDirs(inputDir))
const easycomOptions = { dirs, rootDir: inputDir }
initEasycom(easycomOptions)
debugEasycom(easycomOptions)
return {
dirs,
refresh() {
initEasycom(easycomOptions)
},
}
}
function initUniModulesEasycomDirs(inputDir: string) {
const uniModulesDir = path.resolve(inputDir, 'uni_modules')
if (!fs.existsSync(uniModulesDir)) {
return []
}
return fs
.readdirSync(uniModulesDir)
.map((uniModuleDir) => {
const uniModuleComponentsDir = path.resolve(
uniModulesDir,
uniModuleDir,
'components'
)
if (fs.existsSync(uniModuleComponentsDir)) {
return uniModuleComponentsDir
}
})
.filter<string>(Boolean as any)
}
function initEasycom({
dirs,
rootDir,
custom,
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册