刮刮前端
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.
 
 
 
 

69 lines
1.6 KiB

const path = require('path')
const {
transformJsonFile
} = require('./json-transformer')
const {
transformTemplateFile
} = require('./template-transformer')
const {
transformStyleFile
} = require('./style-transformer')
const {
transformScriptFile
} = require('./script-transformer')
const {
normalizePath
} = require('../../util')
const pkg = require('../../../package.json')
module.exports = function transformFile(input, options) {
const {
template: templateExtname,
style: styleExtname
} = options.extname
const filepath = input.replace(templateExtname, '')
const deps = [
filepath + templateExtname
]
const [jsCode, isComponent] = transformJsonFile(filepath + '.json', deps)
options.isComponent = isComponent
options.filepath = filepath
options.filename = path.basename(filepath)
if (options.base) {
options.route = normalizePath(path.relative(options.base, filepath))
} else {
options.route = options.filename
}
options.shadowRootHost = options.route.replace(/\//g, '-')
const [templateCode, wxsCode = '', wxsFiles = []] = transformTemplateFile(filepath + templateExtname, options)
const styleCode = transformStyleFile(filepath + styleExtname, options, deps) || ''
const scriptCode = transformScriptFile(filepath + '.js', jsCode, options, deps)
const commentsCode = options.silent ? '' :
`<!-- @dcloudio/uni-migration@${pkg.version} -->
<!-- ${new Date().toLocaleString()} -->
`
return [
`${commentsCode}<template>
${templateCode}
</template>
${wxsCode}
<script>
${scriptCode}
</script>
<style platform="mp-weixin">
${styleCode}
</style>`,
deps,
wxsFiles
]
}