智能照明系统APP-本地串口
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
LightingSystemApp-serial/.svn/pristine/9a/9a02674267650571cb15f83d319...

69 lines
2.0 KiB

const path = require('path')
const loaderUtils = require('loader-utils')
const t = require('@babel/types')
const parser = require('@babel/parser')
const traverse = require('@babel/traverse').default
const {
normalizeNodeModules
} = require('@dcloudio/uni-cli-shared/lib/platform')
module.exports = function (source, map) {
const params = loaderUtils.parseQuery(this.resourceQuery)
if (
process.env.UNI_PLATFORM === 'h5' ||
(
process.env.UNI_PLATFORM === 'app-plus' &&
process.env.UNI_USING_V3
)
) { // h5 or v3 app-plus
this.callback(
null,
`export default function (Component) {
(Component.options.wxs||(Component.options.wxs={}))['${params.module}'] = (function(module){
${source.trim()}
return module.exports
})({exports:{}});
}`,
map
)
} else { // mp
const callMethods = new Set()
if (source.indexOf('callMethod') !== -1) {
traverse(parser.parse(source, {
sourceType: 'module'
}), {
MemberExpression (path, state) {
const property = path.node.property
const parentNode = path.parent
if (
(
property.name === 'callMethod' ||
property.value === 'callMethod'
) &&
t.isCallExpression(parentNode) &&
t.isLiteral(parentNode.arguments[0])
) {
callMethods.add(parentNode.arguments[0].value)
}
}
})
}
if (params.issuerPath) {
const resourcePath = normalizeNodeModules(path.relative(process.env.UNI_INPUT_DIR, this.resourcePath))
this.emitFile(resourcePath, source)
}
this.callback(null,
`export default function (Component) {
if(!Component.options.wxsCallMethods){
Component.options.wxsCallMethods = []
}
${[...callMethods].map(method => {
return "Component.options.wxsCallMethods.push('" + method + "')"
}).join('\n')}
}`,
map)
}
}