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

wip(app): nvue styler

上级 dbadb37a
...@@ -21,6 +21,7 @@ ...@@ -21,6 +21,7 @@
"dependencies": { "dependencies": {
"@dcloudio/uni-cli-shared": "3.0.0-alpha-3030820220114006", "@dcloudio/uni-cli-shared": "3.0.0-alpha-3030820220114006",
"@dcloudio/uni-i18n": "3.0.0-alpha-3030820220114006", "@dcloudio/uni-i18n": "3.0.0-alpha-3030820220114006",
"@dcloudio/uni-nvue-styler": "workspace:*",
"@dcloudio/uni-shared": "3.0.0-alpha-3030820220114006", "@dcloudio/uni-shared": "3.0.0-alpha-3030820220114006",
"@rollup/pluginutils": "^4.1.2", "@rollup/pluginutils": "^4.1.2",
"@vitejs/plugin-vue": "^2.0.1", "@vitejs/plugin-vue": "^2.0.1",
......
import type { PreRenderedChunk } from 'rollup'
import type { Plugin } from 'vite'
import path from 'path' import path from 'path'
import { import {
createTransformTag, createTransformTag,
...@@ -8,8 +10,7 @@ import { ...@@ -8,8 +10,7 @@ import {
removeExt, removeExt,
resolveMainPathOnce, resolveMainPathOnce,
} from '@dcloudio/uni-cli-shared' } from '@dcloudio/uni-cli-shared'
import { PreRenderedChunk } from 'rollup' import { parse } from '@dcloudio/uni-nvue-styler'
import { Plugin } from 'vite'
import { nvueOutDir } from '../../utils' import { nvueOutDir } from '../../utils'
import { transformRenderWhole } from './transforms/transformRenderWhole' import { transformRenderWhole } from './transforms/transformRenderWhole'
import { transformAppendAsTree } from './transforms/transformAppendAsTree' import { transformAppendAsTree } from './transforms/transformAppendAsTree'
...@@ -83,8 +84,14 @@ export function uniAppNVuePlugin(): Plugin { ...@@ -83,8 +84,14 @@ export function uniAppNVuePlugin(): Plugin {
return normalizeCssChunkFilename(id) return normalizeCssChunkFilename(id)
} }
}, },
chunkCssCode(_, cssCode) { async chunkCssCode(filename, cssCode) {
return 'export default {}' const { code, messages } = await parse(cssCode, { filename })
messages.forEach((msg) => {
if (msg.type === 'warning' || msg.type === 'error') {
console.warn(msg.text)
}
})
return `export default ${code}`
}, },
}), }),
} }
......
...@@ -38,13 +38,11 @@ export function uniEsbuildPlugin(): Plugin { ...@@ -38,13 +38,11 @@ export function uniEsbuildPlugin(): Plugin {
} }
}) })
debugEsbuild('start', entryPoints.length, entryPoints) debugEsbuild('start', entryPoints.length, entryPoints)
await Promise.all( for (const filename of entryPoints) {
entryPoints.map((filename) => { await buildNVuePage(filename, buildOptions).then((code) => {
return buildNVuePage(filename, buildOptions).then((code) => { return fs.outputFile(path.resolve(outputDir, filename), code)
return fs.outputFile(path.resolve(outputDir, filename), code)
})
}) })
) }
debugEsbuild('end') debugEsbuild('end')
}, },
} }
......
...@@ -8,7 +8,7 @@ import { ...@@ -8,7 +8,7 @@ import {
export function createConfigResolved(options: { export function createConfigResolved(options: {
chunkCssFilename: (id: string) => string | void chunkCssFilename: (id: string) => string | void
chunkCssCode: (filename: string, cssCode: string) => string chunkCssCode: (filename: string, cssCode: string) => string | Promise<string>
}): Plugin['configResolved'] { }): Plugin['configResolved'] {
return (config) => { return (config) => {
injectCssPlugin(config) injectCssPlugin(config)
......
...@@ -220,7 +220,10 @@ export function cssPostPlugin( ...@@ -220,7 +220,10 @@ export function cssPostPlugin(
chunkCssCode, chunkCssCode,
}: { }: {
chunkCssFilename: (id: string) => string | void chunkCssFilename: (id: string) => string | void
chunkCssCode: (filename: string, cssCode: string) => string chunkCssCode: (
filename: string,
cssCode: string
) => Promise<string> | string
} }
): Plugin { ): Plugin {
// styles initialization in buildStart causes a styling loss in watch // styles initialization in buildStart causes a styling loss in watch
......
...@@ -26,7 +26,10 @@ export function injectCssPostPlugin( ...@@ -26,7 +26,10 @@ export function injectCssPostPlugin(
chunkCssCode, chunkCssCode,
}: { }: {
chunkCssFilename: (id: string) => string | void chunkCssFilename: (id: string) => string | void
chunkCssCode: (filename: string, cssCode: string) => string chunkCssCode: (
filename: string,
cssCode: string
) => string | Promise<string>
} }
) { ) {
const newCssPostPlugin = cssPostPlugin(config, { const newCssPostPlugin = cssPostPlugin(config, {
......
import { objectifier, parse } from '../src' import { parse } from '../src'
async function objectifierRule(input: string) { async function objectifierRule(input: string) {
const { root, messages } = await parse(input, { logLevel: 'NOTE' }) const { code, messages } = await parse(input, { logLevel: 'NOTE' })
return { return {
json: objectifier(root), json: JSON.parse(code),
messages, messages,
} }
} }
......
import { objectifier, parse } from '../src' import { parse } from '../src'
async function objectifierRoot(input: string) { async function objectifierRoot(input: string) {
const { root, messages } = await parse(input, { logLevel: 'NOTE' }) const { code, messages } = await parse(input, { logLevel: 'NOTE' })
return { return {
json: objectifier(root), json: JSON.parse(code),
messages, messages,
} }
} }
......
import postcss from 'postcss' import postcss, { Message } from 'postcss'
import { NormalizeOptions } from './normalize' import { objectifier } from '.'
import { expand, normalize } from '../src' import { expand } from './expand'
import { NormalizeOptions, normalize } from './normalize'
interface ParseOpitons extends NormalizeOptions { interface ParseOpitons extends NormalizeOptions {
filename?: string filename?: string
} }
export function parse(input: string, options: ParseOpitons = {}) { export async function parse(input: string, options: ParseOpitons = {}) {
return postcss([expand, normalize(options)]) const { root, messages } = await postcss([expand, normalize(options)])
.process(input, { .process(input, {
from: options.filename || 'foo.css', from: options.filename || 'foo.css',
}) })
...@@ -17,8 +18,12 @@ export function parse(input: string, options: ParseOpitons = {}) { ...@@ -17,8 +18,12 @@ export function parse(input: string, options: ParseOpitons = {}) {
{ {
type: 'warning', type: 'warning',
text: err.message, text: err.message,
}, } as Message,
], ],
} }
}) })
if (root) {
return { code: JSON.stringify(objectifier(root)), messages }
}
return { code: JSON.stringify({}), messages }
} }
...@@ -200,6 +200,7 @@ importers: ...@@ -200,6 +200,7 @@ importers:
specifiers: specifiers:
'@dcloudio/uni-cli-shared': 3.0.0-alpha-3030820220114006 '@dcloudio/uni-cli-shared': 3.0.0-alpha-3030820220114006
'@dcloudio/uni-i18n': 3.0.0-alpha-3030820220114006 '@dcloudio/uni-i18n': 3.0.0-alpha-3030820220114006
'@dcloudio/uni-nvue-styler': workspace:*
'@dcloudio/uni-shared': 3.0.0-alpha-3030820220114006 '@dcloudio/uni-shared': 3.0.0-alpha-3030820220114006
'@rollup/pluginutils': ^4.1.2 '@rollup/pluginutils': ^4.1.2
'@types/debug': ^4.1.7 '@types/debug': ^4.1.7
...@@ -214,6 +215,7 @@ importers: ...@@ -214,6 +215,7 @@ importers:
dependencies: dependencies:
'@dcloudio/uni-cli-shared': link:../uni-cli-shared '@dcloudio/uni-cli-shared': link:../uni-cli-shared
'@dcloudio/uni-i18n': link:../uni-i18n '@dcloudio/uni-i18n': link:../uni-i18n
'@dcloudio/uni-nvue-styler': link:../uni-nvue-styler
'@dcloudio/uni-shared': link:../uni-shared '@dcloudio/uni-shared': link:../uni-shared
'@rollup/pluginutils': 4.1.2 '@rollup/pluginutils': 4.1.2
'@vitejs/plugin-vue': 2.0.1_vite@2.7.13+vue@3.2.27 '@vitejs/plugin-vue': 2.0.1_vite@2.7.13+vue@3.2.27
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册