智能照明系统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/11/114eefddc4ee094a57e54654c71...

102 lines
2.8 KiB

const fs = require('fs')
const path = require('path')
const loaderUtils = require('loader-utils')
const {
parsePages,
normalizePath,
parsePagesJson,
parseManifestJson
} = require('@dcloudio/uni-cli-shared')
const {
getPagesJson
} = require('@dcloudio/uni-cli-shared/lib/cache')
const {
pagesJsonJsFileName
} = require('@dcloudio/uni-cli-shared/lib/pages')
const parseStyle = require('./util').parseStyle
const emitFileCaches = {}
function checkEmitFile (filePath, jsonObj, changedEmitFiles) {
const content = JSON.stringify(jsonObj, null, 2)
if (emitFileCaches[filePath] !== content) {
changedEmitFiles.push(filePath)
emitFileCaches[filePath] = content
}
}
module.exports = function (content, map) {
if (this.resourceQuery) {
const params = loaderUtils.parseQuery(this.resourceQuery)
if (params) {
if (params.type === 'style') {
return `export default ${JSON.stringify(getPagesJson())}`
} else if (params.type === 'stat') {
return `export default ${JSON.stringify(process.UNI_STAT_CONFIG || {})}`
}
}
}
if (
process.env.UNI_USING_COMPONENTS ||
process.env.UNI_PLATFORM === 'h5' ||
process.env.UNI_PLATFORM === 'quickapp-native'
) {
return require('./index-new').call(this, content, map)
}
this.cacheable && this.cacheable()
const manifestJsonPath = path.resolve(process.env.UNI_INPUT_DIR, 'manifest.json')
const pagesJsonJsPath = path.resolve(process.env.UNI_INPUT_DIR, pagesJsonJsFileName)
const manifestJson = parseManifestJson(fs.readFileSync(manifestJsonPath, 'utf8'))
this.addDependency(manifestJsonPath)
this.addDependency(pagesJsonJsPath)
const pagesJson = parsePagesJson(content, {
addDependency: (file) => {
(process.UNI_PAGES_DEPS || (process.UNI_PAGES_DEPS = new Set())).add(normalizePath(file))
this.addDependency(file)
}
})
if (manifestJson.transformPx === false) {
process.UNI_TRANSFORM_PX = false
} else {
process.UNI_TRANSFORM_PX = true
}
if (process.env.UNI_PLATFORM === 'h5') {
return require('./platforms/h5')(pagesJson, manifestJson)
}
const changedEmitFiles = []
function checkPageEmitFile (pagePath, pageStyle) {
checkEmitFile(pagePath, parseStyle(pageStyle), changedEmitFiles)
}
parsePages(pagesJson, function (page) {
checkPageEmitFile(page.path, page.style)
}, function (root, page) {
checkPageEmitFile(normalizePath(path.join(root, page.path)), page.style)
})
const jsonFiles = require('./platforms/' + process.env.UNI_PLATFORM)(pagesJson, manifestJson)
if (jsonFiles && jsonFiles.length) {
jsonFiles.forEach(jsonFile => {
jsonFile && checkEmitFile(jsonFile.name, jsonFile.content, changedEmitFiles)
})
}
changedEmitFiles.forEach(name => {
this.emitFile(name + '.json', emitFileCaches[name])
})
this.callback(null, '', map)
}