Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
20岁爱吃必胜客
uni-app
提交
08b6dc35
U
uni-app
项目概览
20岁爱吃必胜客
/
uni-app
与 Fork 源项目一致
Fork自
DCloud / uni-app
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
1
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
U
uni-app
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
1
Issue
1
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
08b6dc35
编写于
12月 01, 2020
作者:
Q
qiang
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix: manifest.json 增加编译配置 nvueStyleCompiler,支持组合选择器
上级
a66737c6
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
62 addition
and
23 deletion
+62
-23
packages/vue-cli-plugin-hbuilderx/packages/webpack-uni-nvue-loader/lib/style.js
...n-hbuilderx/packages/webpack-uni-nvue-loader/lib/style.js
+2
-2
packages/vue-cli-plugin-hbuilderx/packages/weex-styler/index.js
...es/vue-cli-plugin-hbuilderx/packages/weex-styler/index.js
+52
-19
packages/vue-cli-plugin-uni/lib/env.js
packages/vue-cli-plugin-uni/lib/env.js
+5
-1
packages/webpack-uni-pages-loader/lib/platforms/app-plus/index.js
.../webpack-uni-pages-loader/lib/platforms/app-plus/index.js
+3
-1
未找到文件。
packages/vue-cli-plugin-hbuilderx/packages/webpack-uni-nvue-loader/lib/style.js
浏览文件 @
08b6dc35
...
...
@@ -5,7 +5,7 @@ var {
}
=
require
(
'
@dcloudio/uni-cli-shared
'
)
module
.
exports
=
function
(
content
,
map
)
{
this
.
cacheable
&&
this
.
cacheable
()
this
.
callback
(
null
,
'
module.exports =
'
+
genStyleString
(
content
.
replace
(
/!important/g
,
''
)
,
this
),
map
)
this
.
callback
(
null
,
'
module.exports =
'
+
genStyleString
(
content
,
this
),
map
)
}
// @todo:
...
...
@@ -67,4 +67,4 @@ function genStyleString (input, loader) {
}
})
return
output
}
}
packages/vue-cli-plugin-hbuilderx/packages/weex-styler/index.js
浏览文件 @
08b6dc35
...
...
@@ -4,6 +4,7 @@ var css = require('css')
var
util
=
require
(
'
./lib/util
'
)
var
validateItem
=
require
(
'
./lib/validator
'
).
validate
var
shorthandParser
=
require
(
'
./lib/shorthand-parser
'
)
var
importantStr
=
'
!important
'
// padding & margin shorthand parsing
function
convertLengthShorthand
(
rule
,
prop
)
{
...
...
@@ -25,6 +26,31 @@ function convertLengthShorthand (rule, prop) {
}
}
/**
* mergeStyle
* @param {*} object
* @param {*} classNames
* @param {*} preClassNames
* @param {*} ruleResult
* @param {*} prop
* @param {*} index
*/
function
mergeStyle
(
object
,
classNames
,
preClassNames
,
ruleResult
,
prop
,
index
)
{
if
(
!
process
.
env
.
UNI_USING_NVUE_STYLE_COMPILER
)
{
object
[
classNames
]
=
object
[
classNames
]
||
{}
object
[
classNames
][
prop
]
=
ruleResult
[
prop
]
return
}
classNames
=
classNames
.
split
(
'
.
'
).
map
(
str
=>
'
.
'
+
str
).
slice
(
1
)
var
className
=
classNames
.
find
(
className
=>
className
in
object
)
||
classNames
[
0
]
// 假设选择器已经去重简化
preClassNames
+=
classNames
.
filter
(
str
=>
str
!==
className
).
sort
().
join
(
''
)
var
rules
=
object
[
className
]
=
object
[
className
]
||
{}
var
style
=
rules
[
preClassNames
]
=
rules
[
preClassNames
]
||
{}
// 增加其他权重信息
style
[
prop
]
=
[...
ruleResult
[
prop
],
preClassNames
.
split
(
'
.
'
).
length
-
1
,
index
]
}
/**
* Parse `<style>` code to a JSON Object and log errors & warnings
*
...
...
@@ -52,7 +78,7 @@ function parse (code, done) {
/* istanbul ignore else */
if
(
ast
&&
ast
.
type
===
'
stylesheet
'
&&
ast
.
stylesheet
&&
ast
.
stylesheet
.
rules
&&
ast
.
stylesheet
.
rules
.
length
)
{
ast
.
stylesheet
.
rules
.
forEach
(
function
(
rule
)
{
ast
.
stylesheet
.
rules
.
forEach
(
function
(
rule
,
index
)
{
var
type
=
rule
.
type
var
ruleResult
=
{}
var
ruleLog
=
[]
...
...
@@ -75,6 +101,8 @@ function parse (code, done) {
name
=
declaration
.
property
value
=
declaration
.
value
var
important
=
value
.
endsWith
(
importantStr
)
value
=
value
.
replace
(
new
RegExp
(
importantStr
,
'
g
'
),
''
)
// validate declarations and collect them to result
camelCasedName
=
util
.
hyphenedToCamelCase
(
name
)
...
...
@@ -82,7 +110,8 @@ function parse (code, done) {
/* istanbul ignore else */
if
(
typeof
subResult
.
value
===
'
number
'
||
typeof
subResult
.
value
===
'
string
'
)
{
ruleResult
[
camelCasedName
]
=
subResult
.
value
// 增加 important 权重信息
ruleResult
[
camelCasedName
]
=
process
.
env
.
UNI_USING_NVUE_STYLE_COMPILER
?
[
subResult
.
value
,
Number
(
important
)]
:
subResult
.
value
}
if
(
subResult
.
log
)
{
subResult
.
log
.
line
=
declaration
.
position
.
start
.
line
...
...
@@ -92,14 +121,18 @@ function parse (code, done) {
})
rule
.
selectors
.
forEach
(
function
(
selector
)
{
if
(
selector
.
match
(
/^
\.[
A-Za-z0-9_
\-
:
]
+$/
))
{
var
className
=
selector
.
slice
(
1
)
selector
=
selector
.
replace
(
/
\s
*
([\+\~\>])\s
*/g
,
'
$1
'
).
replace
(
/
\s
+/
,
'
'
)
// 支持组合选择器
const
res
=
selector
.
match
(
process
.
env
.
UNI_USING_NVUE_STYLE_COMPILER
?
/^
((?:(?:\.[
A-Za-z0-9_
\-]
+
)
+
[\+\~\>
])
*
)((?:\.[
A-Za-z0-9_
\-\:]
+
)
+
)
$/
:
/^
(\.)([
A-Za-z0-9_
\-
:
]
+
)
$/
)
if
(
res
)
{
var
preClassNames
=
res
[
1
]
var
classNames
=
res
[
2
]
// handle pseudo class
var
pseudoIndex
=
className
.
indexOf
(
'
:
'
)
var
pseudoIndex
=
className
s
.
indexOf
(
'
:
'
)
if
(
pseudoIndex
>
-
1
)
{
var
pseudoCls
=
className
.
slice
(
pseudoIndex
)
className
=
className
.
slice
(
0
,
pseudoIndex
)
var
pseudoCls
=
className
s
.
slice
(
pseudoIndex
)
className
s
=
classNames
.
slice
(
0
,
pseudoIndex
)
var
pseudoRuleResult
=
{}
Object
.
keys
(
ruleResult
).
forEach
(
function
(
prop
)
{
pseudoRuleResult
[
prop
+
pseudoCls
]
=
ruleResult
[
prop
]
...
...
@@ -109,24 +142,22 @@ function parse (code, done) {
// merge style
Object
.
keys
(
ruleResult
).
forEach
(
function
(
prop
)
{
// handle transition
if
(
prop
.
indexOf
(
'
transition
'
)
===
0
&&
prop
!==
'
transition
'
)
{
var
realProp
=
prop
.
replace
(
'
transition
'
,
''
)
realProp
=
realProp
[
0
].
toLowerCase
()
+
realProp
.
slice
(
1
)
jsonStyle
[
'
@TRANSITION
'
]
=
jsonStyle
[
'
@TRANSITION
'
]
||
{}
jsonStyle
[
'
@TRANSITION
'
][
className
]
=
jsonStyle
[
'
@TRANSITION
'
][
className
]
||
{}
jsonStyle
[
'
@TRANSITION
'
][
className
][
realProp
]
=
ruleResult
[
prop
]
}
jsonStyle
[
className
]
=
jsonStyle
[
className
]
||
{}
jsonStyle
[
className
][
prop
]
=
ruleResult
[
prop
]
// // handle transition
// if (prop.indexOf('transition') === 0 && prop !== 'transition') {
// var realProp = prop.replace('transition', '')
// realProp = realProp[0].toLowerCase() + realProp.slice(1)
// var object = jsonStyle['@TRANSITION'] = jsonStyle['@TRANSITION'] || {}
// mergeStyle(object, classNames, preClassNames, ruleResult, prop, index)
// }
mergeStyle
(
jsonStyle
,
classNames
,
preClassNames
,
ruleResult
,
prop
,
index
)
})
}
else
{
log
.
push
({
line
:
rule
.
position
.
start
.
line
,
column
:
rule
.
position
.
start
.
column
,
reason
:
'
ERROR: Selector `
'
+
selector
+
'
` is not supported. Weex only support
single-
classname selector
'
reason
:
'
ERROR: Selector `
'
+
selector
+
'
` is not supported. Weex only support classname selector
'
})
}
})
...
...
@@ -158,6 +189,8 @@ function parse (code, done) {
})
}
jsonStyle
[
'
@VERSION
'
]
=
2
done
(
err
,
{
jsonStyle
:
jsonStyle
,
log
:
log
})
}
...
...
packages/vue-cli-plugin-uni/lib/env.js
浏览文件 @
08b6dc35
...
...
@@ -242,6 +242,10 @@ if (isNVueCompiler) {
process
.
env
.
UNI_USING_NVUE_COMPILER
=
true
}
if
(
platformOptions
.
nvueStyleCompiler
!==
'
weex
'
)
{
process
.
env
.
UNI_USING_NVUE_STYLE_COMPILER
=
true
}
if
(
platformOptions
.
usingComponents
===
true
)
{
if
(
process
.
env
.
UNI_PLATFORM
!==
'
h5
'
)
{
process
.
env
.
UNI_USING_COMPONENTS
=
true
...
...
@@ -425,4 +429,4 @@ runByHBuilderX && console.log('正在编译中...')
module
.
exports
=
{
manifestPlatformOptions
:
platformOptions
}
}
packages/webpack-uni-pages-loader/lib/platforms/app-plus/index.js
浏览文件 @
08b6dc35
...
...
@@ -271,6 +271,8 @@ module.exports = function (pagesJson, userManifestJson, isAppView) {
appJson
.
nvueCompiler
=
'
weex
'
}
appJson
.
nvueStyleCompiler
=
process
.
env
.
UNI_USING_NVUE_STYLE_COMPILER
?
'
uni-app
'
:
'
weex
'
if
(
manifestJson
.
plus
.
renderer
===
'
native
'
)
{
appJson
.
renderer
=
'
native
'
}
else
{
...
...
@@ -522,4 +524,4 @@ module.exports = function (pagesJson, userManifestJson, isAppView) {
},
isAppView
)
}
return
[
app
,
manifest
]
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录