提交 95bf60f7 编写于 作者: Q qiang

Merge branch 'dev' into alpha

......@@ -85,8 +85,7 @@ function getH5Options (manifestJson) {
}
/* eslint-disable no-mixed-operators */
h5.template = h5.template && path.resolve(process.env.UNI_INPUT_DIR, h5.template) || path.resolve(__dirname,
'../../../../public/index.html')
h5.template = h5.template && path.resolve(process.env.UNI_INPUT_DIR, h5.template) || path.resolve(require('./util').getCLIContext(), 'public/index.html')
h5.devServer = h5.devServer || {}
......
......@@ -14,6 +14,24 @@ try {
const isInHBuilderX = !!aboutPkg
const isInHBuilderXAlpha = !!(isInHBuilderX && aboutPkg.alpha)
function getCLIContext () {
var context = path.resolve(__dirname, '../../../../')
// const isInHBuilderX = fs.existsSync(path.resolve(context, 'bin/uniapp-cli.js'))
if (isInHBuilderX) {
return context
}
const pnpmFind = __dirname.match(/.+?[\/\\].pnpm[\/\\]/)
if (pnpmFind) {
const pnpm = pnpmFind[0]
context = path.resolve(pnpm, '../../')
}
const isInCLI = fs.existsSync(path.resolve(context, './src'))
if (isInCLI) {
return context
}
return process.cwd()
}
function removeExt (str, ext) {
if (ext) {
const reg = new RegExp(ext.replace(/\./, '\\.') + '$')
......@@ -105,6 +123,7 @@ const _hasOwnProperty = Object.prototype.hasOwnProperty
module.exports = {
isInHBuilderX,
isInHBuilderXAlpha,
getCLIContext,
normalizeNodeModules,
md5,
hasOwn (obj, key) {
......
......@@ -794,11 +794,6 @@ const customize = cached((str) => {
});
function initTriggerEvent (mpInstance) {
{
if (!wx.canIUse || !wx.canIUse('nextTick')) {
return
}
}
const oldTriggerEvent = mpInstance.triggerEvent;
mpInstance.triggerEvent = function (event, ...args) {
return oldTriggerEvent.apply(mpInstance, [customize(event), ...args])
......
......@@ -2,7 +2,7 @@ const fs = require('fs')
const path = require('path')
const uniI18n = require('@dcloudio/uni-cli-i18n')
process.env.UNI_CLI_CONTEXT = path.resolve(__dirname, '../../../')
process.env.UNI_CLI_CONTEXT = require('@dcloudio/uni-cli-shared/lib/util').getCLIContext()
process.env.UNI_HBUILDERX_PLUGINS = process.env.UNI_HBUILDERX_PLUGINS || path.resolve(__dirname, '../../../../')
......
......@@ -13,12 +13,14 @@ class Upate {
this._isAlpha = false
this._uniId = ''
this._appId = ''
this._wt = 0
this._lc = ''
this._lcin = []
}
get uniId () {
return this._uniId
}
set uniId (value) {
this._uniId = value
}
......@@ -26,7 +28,6 @@ class Upate {
get appId () {
return this._appId
}
set appId (value) {
this._appId = value
}
......@@ -34,7 +35,6 @@ class Upate {
get compilerVersion () {
return this._compilerVersion
}
set compilerVersion (value) {
this._compilerVersion = value
}
......@@ -42,11 +42,31 @@ class Upate {
get isAlpha () {
return this._isAlpha
}
set isAlpha (value) {
this._isAlpha = value
}
get wt () {
return this._wt
}
set wt (value) {
this._wt = value
}
get lc () {
return this._lc
}
set lc (value) {
this._lc = value
}
get lcin () {
return this._lcin
}
set lcin (value) {
this._lcin = value
}
get versionType () {
return (this.isAlpha ? 'a' : 'r')
}
......@@ -156,6 +176,9 @@ class Upate {
data.appid = this.uniId
data.vtype = this.versionType
data.vcode = this.compilerVersion
data.wt = this._wt
data.lc = this._lc
data.in = this._lcin
delete data.lastCheck
......@@ -234,6 +257,28 @@ Object.assign(Upate.prototype, {
DEFAULT_INTERVAL: 1000 * 60 * 60 * 24
})
function getLc() {
let result = []
const locale_dir = path.join(process.env.UNI_CLI_CONTEXT, 'src/locale')
if (!fs.existsSync(locale_dir)) {
return result
}
let files = fs.readdirSync(locale_dir)
for (let i = files.length - 1; i >= 0; i--) {
let filePath = files[i]
let extName = filePath.substring(filePath.lastIndexOf('.') + 1).toLowerCase()
if (extName !== 'json') {
continue
}
if (files[i].indexOf('uni-app.') < 0) {
result.push(filePath.substring(0, filePath.lastIndexOf('.')))
}
}
return result
}
module.exports = async function checkUpdate () {
const {
isInHBuilderX,
......@@ -255,6 +300,10 @@ module.exports = async function checkUpdate () {
update.uniId = manifest.appid
const appIdKey = process.env.UNI_PLATFORM.includes('quickapp') ? 'package' : 'appid'
update.appId = manifest[process.env.UNI_PLATFORM] ? (manifest[process.env.UNI_PLATFORM][appIdKey] || '') : ''
const cf = manifest['mp-weixin'] ? manifest['mp-weixin']['cloudfunctionRoot'] : ''
update.wt = (cf && cf.length) ? 1 : 0
update.lc = manifest['locale'] ? manifest['locale'] : ''
update.lcin = getLc().join(',')
update.check()
} catch (e) {
}
......
......@@ -15,7 +15,7 @@ function resolve (dir) {
}
function resolveModule (dir) {
return path.resolve(__dirname, '../../..', dir)
return path.resolve(process.env.UNI_CLI_CONTEXT, './node_modules', dir)
}
module.exports = function configureWebpack (platformOptions, manifestPlatformOptions, vueOptions, api) {
......@@ -184,8 +184,9 @@ module.exports = function configureWebpack (platformOptions, manifestPlatformOpt
platformWebpackConfig = platformWebpackConfig(webpackConfig, vueOptions, api)
}
// 移除 node_modules 目录,避免受路径上的 node_modules 影响
webpackConfig.resolve.modules = webpackConfig.resolve.modules.filter(module => module !==
'node_modules')
if (require('@dcloudio/uni-cli-shared/lib/util').isInHBuilderX) {
webpackConfig.resolve.modules = webpackConfig.resolve.modules.filter(module => module !== 'node_modules')
}
const plugins = []
......@@ -298,6 +299,17 @@ module.exports = function configureWebpack (platformOptions, manifestPlatformOpt
}
} catch (e) {}
const resolveLoaderAlias = {}
const modules = ['@vue/cli-plugin-babel', '@vue/cli-service']
modules.forEach(m => {
const { dependencies } = require(`${m}/package.json`)
Object.keys(dependencies).forEach(key => {
if (/-loader$/.test(key)) {
resolveLoaderAlias[key] = require.resolve(key)
}
})
})
return merge({
devtool: false,
resolve: {
......@@ -325,6 +337,9 @@ module.exports = function configureWebpack (platformOptions, manifestPlatformOpt
noParse: /^(vue|vue-router|vuex|vuex-router-sync)$/,
rules
},
resolveLoader: {
alias: resolveLoaderAlias
},
plugins,
performance: {
assetFilter (assetFilename) {
......
......@@ -107,11 +107,13 @@ if (process.env.UNI_CLOUD_SPACES) {
}
// 初始化环境变量
const defaultOutputDir = '../../../../dist/' +
process.env.UNI_CLI_CONTEXT = require('@dcloudio/uni-cli-shared/lib/util').getCLIContext()
const defaultOutputDir = './dist/' +
(process.env.NODE_ENV === 'production' ? 'build' : 'dev') + '/' +
(process.env.UNI_SUB_PLATFORM || process.env.UNI_PLATFORM)
process.env.UNI_OUTPUT_DEFAULT_DIR = path.resolve(__dirname, defaultOutputDir)
process.env.UNI_OUTPUT_DEFAULT_DIR = path.resolve(process.env.UNI_CLI_CONTEXT, defaultOutputDir)
if (process.env.UNI_OUTPUT_DIR && process.env.UNI_OUTPUT_DIR.indexOf('./') === 0) {
process.env.UNI_OUTPUT_DIR = path.resolve(process.cwd(), process.env.UNI_OUTPUT_DIR)
}
......@@ -124,8 +126,6 @@ if (process.env.UNI_PLATFORM === 'app-plus') {
process.env.UNI_OUTPUT_TMP_DIR = path.resolve(process.env.UNI_OUTPUT_DIR, '../.tmp/app-plus')
}
process.env.UNI_CLI_CONTEXT = path.resolve(__dirname, '../../../../')
process.UNI_LIBRARIES = process.UNI_LIBRARIES || ['@dcloudio/uni-ui']
if (process.env.NODE_ENV === 'production') { // 发行模式,不启用 cache
......
......@@ -32,13 +32,22 @@ export default {
},
methods: {
_renderNodes (nodes) {
let scopeId = ''
let $vm = this
while ($vm) {
!scopeId && (scopeId = $vm.$options._scopeId)
$vm = $vm.$parent
}
const hasItemClick = !!this.$listeners.itemclick
if (!this._isMounted) {
return
}
if (typeof nodes === 'string') {
nodes = parseHtml(nodes)
}
const nodeList = parseNodes(nodes, document.createDocumentFragment(), this)
const nodeList = parseNodes(nodes, document.createDocumentFragment(), scopeId, hasItemClick && this.triggerItemClick)
nodeList.appendChild(this.$refs.sensor.$el)
const content = this.$refs.content
content.innerHTML = ''
......@@ -46,6 +55,9 @@ export default {
},
_updateView () {
window.dispatchEvent(new CustomEvent('updateview'))
},
triggerItemClick (e, detail = {}) {
this.$trigger('itemclick', e, detail)
}
}
}
......
......@@ -102,13 +102,7 @@ function normlizeValue (tagName, name, value) {
return value
}
export default function parseNodes (nodes, parentNode, $vm) {
let scopeId = ''
while ($vm) {
!scopeId && (scopeId = $vm.$options._scopeId)
$vm = $vm.$parent
}
export default function parseNodes (nodes, parentNode, scopeId, triggerItemClick) {
nodes.forEach(function (node) {
if (!isPlainObject(node)) {
return
......@@ -146,9 +140,11 @@ export default function parseNodes (nodes, parentNode, $vm) {
})
}
processClickEvent(node, elem, triggerItemClick)
const children = node.children
if (Array.isArray(children) && children.length) {
parseNodes(node.children, elem)
parseNodes(node.children, elem, scopeId, triggerItemClick)
}
parentNode.appendChild(elem)
......@@ -160,3 +156,13 @@ export default function parseNodes (nodes, parentNode, $vm) {
})
return parentNode
}
function processClickEvent (node, elem, triggerItemClick) {
if (['a', 'img'].includes(node.name) && triggerItemClick) {
elem.setAttribute('onClick', 'return false;')
elem.addEventListener('click', (e) => {
triggerItemClick(e, { node })
e.stopPropagation()
}, true)
}
}
......@@ -162,7 +162,6 @@ export default {
mounted () {
this._currentCheck()
this.touchtrack(this.$refs.slidesWrapper, '_handleContentTrack', true)
this._resetLayout()
this.$watch(() => {
return this.autoplay && !this.userTracking
}, this._inintAutoplay)
......
......@@ -13,11 +13,6 @@ const customize = cached((str) => {
})
function initTriggerEvent (mpInstance) {
if (__PLATFORM__ === 'mp-weixin' || __PLATFORM__ === 'app-plus') {
if (!wx.canIUse || !wx.canIUse('nextTick')) {
return
}
}
const oldTriggerEvent = mpInstance.triggerEvent
mpInstance.triggerEvent = function (event, ...args) {
return oldTriggerEvent.apply(mpInstance, [customize(event), ...args])
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册