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

refactor(cli): uni.compiler.js

上级 9e41cd98
......@@ -23,6 +23,10 @@ const PLATFORMS = {
prefix: 'tt',
title: '头条小程序'
},
'mp-quickapp': {
prefix: 'qa',
title: '快应用(Light)版'
},
'app-plus': {
prefix: 'wx',
title: 'app-plus'
......
......@@ -22,7 +22,8 @@
"build:mp-weixin": "cross-env UNI_PLATFORM=mp-weixin rollup -c build/rollup.config.mp.js",
"build:mp-baidu": "cross-env UNI_PLATFORM=mp-baidu rollup -c build/rollup.config.mp.js",
"build:mp-alipay": "cross-env UNI_PLATFORM=mp-alipay rollup -c build/rollup.config.mp.js",
"build:mp-toutiao": "cross-env UNI_PLATFORM=mp-toutiao rollup -c build/rollup.config.mp.js",
"build:mp-toutiao": "cross-env UNI_PLATFORM=mp-toutiao rollup -c build/rollup.config.mp.js",
"build:mp-quickapp": "cross-env UNI_PLATFORM=mp-quickapp rollup -c build/rollup.config.mp.js",
"build:mp-weixin:mp": "npm run lint && cross-env UNI_PLATFORM=mp-weixin UNI_MP=true rollup -c build/rollup.config.mp.js",
"build:mp-weixin:wxs": "rollup -c build/rollup.config.wxs.js",
"build:quickapp": "cross-env NODE_ENV=development node build/build.qa.js && cross-env NODE_ENV=production node build/build.qa.js",
......@@ -110,7 +111,8 @@
"my": true,
"swan": true,
"tt": true,
"qh": true,
"qh": true,
"qa": true,
"HWH5": true,
"weex": true,
"__id__": true,
......
module.exports = require('@dcloudio/uni-mp-weixin/lib/uni.compiler.js')
......@@ -24,7 +24,7 @@ function initPlugin (plugin) {
try {
pluginApi = require(path.join(plugin.id, (plugin.config.main || '/lib/uni.config.js')))
} catch (e) {
console.warn(`缺少 uni.config.js `)
console.warn(`${plugin.id} 缺少 uni.config.js `)
}
pluginApi && PLUGIN_KEYS.forEach(name => {
......@@ -45,8 +45,9 @@ const officialPlugins = [
'@dcloudio/uni-h5',
'@dcloudio/uni-mp-360',
'@dcloudio/uni-mp-alipay',
'@dcloudio/uni-mp-baidu',
'@dcloudio/uni-mp-qq',
'@dcloudio/uni-mp-baidu',
'@dcloudio/uni-mp-qq',
'@dcloudio/uni-mp-quickapp',
'@dcloudio/uni-mp-toutiao',
'@dcloudio/uni-mp-welink',
'@dcloudio/uni-mp-weixin'
......@@ -118,8 +119,9 @@ module.exports = {
initExtends(name, plugin, plugins)
initPlugin(plugin)
Plugin.name = name
Plugin.name = name
Plugin.id = plugin.id
Plugin.config = plugin.config
Plugin.platforms = plugins.map(plugin => plugin.name)
Plugin.preprocess = initPreprocessContext(name, Plugin.platforms, process.UNI_SCRIPT_DEFINE)
......
const t = require('@babel/types')
function cached (fn) {
const cache = Object.create(null)
return function cachedFn (str) {
const hit = cache[str]
return hit || (cache[str] = fn(str))
}
}
const {
capitalize
} = require('../util')
const capitalize = cached(str => {
return str.charAt(0).toUpperCase() + str.slice(1)
})
const EVENTS = {
'click': 'tap',
......@@ -30,7 +36,7 @@ const EVENTS = {
}
module.exports = {
prefix: 'a:',
directive: 'a:',
specialEvents: {
'form': {
'reset': 'onReset'
......@@ -79,7 +85,7 @@ module.exports = {
},
children: normalizeChildren(traverseExpr(returnExprNodes, state))
}
if (t.isIdentifier(paramExprNode)) {
if (paramExprNode && paramExprNode.type === 'Identifier') {
node.scoped = paramExprNode.name
}
return node
......
const t = require('@babel/types')
module.exports = {
prefix: 's-',
directive: 's-',
createScopedSlots (slotName, props, state) {
const node = {
type: 'slot',
......@@ -28,7 +26,7 @@ module.exports = {
},
children: normalizeChildren(traverseExpr(returnExprNodes, state))
}
if (t.isIdentifier(paramExprNode)) {
if (paramExprNode && paramExprNode.type === 'Identifier') {
node.scoped = paramExprNode.name
}
return node
......
const compiler = require('@dcloudio/uni-mp-weixin/lib/uni.compiler.js')
module.exports = Object.assign({}, compiler, {
directive: 'qq:'
})
const compiler = require('@dcloudio/uni-mp-weixin/lib/uni.compiler.js')
module.exports = Object.assign({}, compiler, {
directive: 'tt:'
})
......@@ -4,21 +4,21 @@ const t = require('@babel/types')
function generateJsCode (properties = '{}') {
return `
wx.createComponent({
wx.createComponent({
generic:true,
props: ${properties},
props: ${properties},
render: function(){}
})
`
}
module.exports = {
prefix: 'wx:',
createScopedSlots (slotName, props, state) {
directive: 'wx:',
createScopedSlots (slotName, props, state) {
const componentName = 'scoped-slots-' + slotName
if (!state.componentGenerics) {
state.componentGenerics = Object.create(null)
}
}
state.componentGenerics[componentName] = true
......
......@@ -10,7 +10,6 @@ const {
ssrCompileToFunctions
} = require('@dcloudio/vue-cli-plugin-uni/packages/vue-template-compiler')
const platforms = require('./platforms')
const traverseScript = require('./script/traverse')
const generateScript = require('./script/generate')
const traverseTemplate = require('./template/traverse')
......@@ -102,7 +101,7 @@ module.exports = {
optimize: false
}), compile)
options.mp.platform = platforms[options.mp.platform]
options.mp.platform = require('./mp')(options.mp.platform)
options.mp.scopeId = options.scopeId
......
......@@ -50,7 +50,7 @@ const tags = [
'editor'
]
module.exports = {
const baseCompiler = {
ref: 'data-ref',
refInFor: 'data-ref-in-for',
specialEvents: {},
......@@ -114,4 +114,17 @@ ${content}
children: []
}
}
}
module.exports = function getCompilerOptions (platform) {
let id = '@dcloudio/uni-' + platform
if (global.uniPlugin) {
id = global.uniPlugin.id
}
return Object.assign({
name: platform
},
baseCompiler,
require(id + '/lib/uni.compiler.js')
)
}
const mpBase = require('./mp-base')
const mpWeixin = require('./mp-weixin')
const mpBaidu = require('./mp-baidu')
const mpAlipay = require('./mp-alipay')
const mpToutiao = require('./mp-toutiao')
module.exports = {
'app-plus': Object.assign({
name: 'app-plus'
}, mpBase, mpWeixin),
'mp-weixin': Object.assign({
name: 'mp-weixin'
}, mpBase, mpWeixin),
'mp-qq': Object.assign({
name: 'mp-qq'
}, mpBase, mpWeixin),
'mp-baidu': Object.assign({
name: 'mp-baidu'
}, mpBase, mpBaidu),
'mp-alipay': Object.assign({
name: 'mp-alipay'
}, mpBase, mpAlipay),
'mp-toutiao': Object.assign({
name: 'mp-toutiao'
}, mpBase, mpToutiao)
}
const mpWeixin = require('./mp-weixin')
module.exports = Object.assign({}, mpWeixin, {
prefix: 'tt:'
// ref: 'vue-ref'
})
......@@ -101,7 +101,7 @@ function traverseCallExpr (callExprNode, state) {
}
function traverseConditionalExpr (conditionalExprNode, state) {
const prefix = state.options.platform.prefix
const prefix = state.options.platform.directive
const ret = [{
type: 'block',
attr: {
......@@ -258,7 +258,7 @@ function genSlotNode (slotName, slotNode, fallbackNodes, state) {
if (!fallbackNodes || t.isNullLiteral(fallbackNodes)) {
return slotNode
}
const prefix = state.options.platform.prefix
const prefix = state.options.platform.directive
return [{
type: 'block',
attr: {
......@@ -381,7 +381,7 @@ function traverseRenderList (callExprNode, state) {
const forKey = traverseKey(forReturnStatementArgument, state)
const prefix = state.options.platform.prefix
const prefix = state.options.platform.directive
const attr = {
[prefix + 'for']: genCode(callExprNode.arguments[0]),
......
......@@ -41,7 +41,11 @@ module.exports = (api, options) => {
return
}
const platformOptions = require('./lib/' + process.env.UNI_PLATFORM)
const type = ['app-plus', 'h5'].includes(process.env.UNI_PLATFORM)
? process.env.UNI_PLATFORM
: 'mp'
const platformOptions = require('./lib/' + type)
let vueConfig = platformOptions.vueConfig
......
const mp = require('../mp')
module.exports = mp
const mp = require('../mp')
module.exports = mp
const mp = require('../mp')
module.exports = mp
const mp = require('../mp')
module.exports = mp
const mp = require('../mp')
module.exports = mp
......@@ -8,13 +8,13 @@ const {
getPlatformCssnano
} = require('@dcloudio/uni-cli-shared')
const WebpackUniAppPlugin = require('../packages/webpack-uni-app-loader/plugin/index')
const WebpackUniAppPlugin = require('../../packages/webpack-uni-app-loader/plugin/index')
const modifyVueLoader = require('./vue-loader')
const modifyVueLoader = require('../vue-loader')
const {
createTemplateCacheLoader
} = require('./cache-loader')
} = require('../cache-loader')
function createUniMPPlugin () {
const WebpackUniMPPlugin = require('@dcloudio/webpack-uni-mp-loader/lib/plugin/index-new')
......@@ -23,7 +23,7 @@ function createUniMPPlugin () {
function getProvides () {
const uniPath = require.resolve('@dcloudio/uni-' + process.env.UNI_PLATFORM)
const uniCloudPath = path.resolve(__dirname, '../packages/uni-cloud/dist/index.js')
const uniCloudPath = path.resolve(__dirname, '../../packages/uni-cloud/dist/index.js')
const provides = {
'uni': [uniPath, 'default'],
'uniCloud': [uniCloudPath, 'default']
......@@ -39,9 +39,9 @@ function getProvides () {
process.env.UNI_PLATFORM === 'app-plus' &&
process.env.UNI_USING_V8
) {
provides['__f__'] = [path.resolve(__dirname, 'format-log.js'), 'default']
provides['__f__'] = [path.resolve(__dirname, '../format-log.js'), 'default']
const cryptoProvide = [path.resolve(__dirname, 'crypto.js'), 'default']
const cryptoProvide = [path.resolve(__dirname, '../crypto.js'), 'default']
provides['crypto'] = cryptoProvide
provides['window.crypto'] = cryptoProvide
provides['global.crypto'] = cryptoProvide
......@@ -73,7 +73,7 @@ module.exports = {
name: 'common/runtime'
}
webpackConfig.optimization.splitChunks = require('./split-chunks')()
webpackConfig.optimization.splitChunks = require('../split-chunks')()
parseEntry()
......@@ -175,7 +175,7 @@ module.exports = {
.add(/\.filter\.js$/)
}
const compilerOptions = process.env.UNI_USING_COMPONENTS ? {} : require('./mp-compiler-options')
const compilerOptions = process.env.UNI_USING_COMPONENTS ? {} : require('../mp-compiler-options')
modifyVueLoader(webpackConfig, {}, compilerOptions, api)
......@@ -190,7 +190,7 @@ module.exports = {
process.env.NODE_ENV === 'production' &&
process.env.UNI_PLATFORM !== 'app-plus'
) {
const OptimizeCssnanoPlugin = require('../packages/@intervolga/optimize-cssnano-plugin/index.js')
const OptimizeCssnanoPlugin = require('../../packages/@intervolga/optimize-cssnano-plugin/index.js')
webpackConfig.plugin('optimize-css')
.init((Plugin, args) => new OptimizeCssnanoPlugin({
sourceMap: false,
......
......@@ -46,4 +46,3 @@ service.register("uni-app-config",{create(a,b,c){if(!__uniConfig.viewport){var d
`
}
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册