智能照明系统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/a3/a336cf84aab24fe5ca5441ddbf7...

79 lines
1.8 KiB

const path = require('path')
const glob = require('glob')
const transformFile = require('./file-transformer')
function generateVueFile(input, out, options) {
try {
const [content, deps, wxsFiles] = transformFile(input, options)
return {
path: path.resolve(out, path.basename(input).replace(options.extname.template, '.vue')),
content,
deps,
wxsFiles
}
} catch (e) {
console.error(input)
throw e
}
}
function generateVueFolder(input, out, options) {
const extname = options.extname.template
const files = []
const assets = []
const deps = []
glob.sync('**/*', {
cwd: input,
nodir: true
}).map(file => {
if (path.extname(file) === extname) {
const vueFile = generateVueFile(
path.resolve(input, file),
path.dirname(path.resolve(out, file)),
options
)
files.push(vueFile)
deps.push(...vueFile.deps)
const dirname = path.dirname(file)
vueFile.wxsFiles.forEach(wxsFile => {
wxsFile.path = path.join(dirname, wxsFile.path)
assets.push(wxsFile)
})
} else {
assets.push(file)
}
})
return [files, assets.filter(asset => {
if (typeof asset === 'string') {
return !deps.includes(path.resolve(input, asset))
}
return true
})]
}
function generateVueApp(input, out, options) {
console.error(`暂不支持转换整个 App`)
return [
[],
[]
]
}
module.exports = function transform(input, out, options) {
switch (options.target) {
case 'file':
return [
[generateVueFile(input, out, options)],
[]
]
case 'folder':
return generateVueFolder(input, out, options)
case 'app':
return generateVueApp(input, out, options)
}
return [
[],
[]
]
}