file-transformer.js 1.0 KB
Newer Older
fxy060608's avatar
fxy060608 已提交
1 2 3 4 5 6 7 8 9 10 11 12
const {
  transformJsonFile
} = require('./json-transformer')
const {
  transformTemplateFile
} = require('./template-transformer')
const {
  transformStyleFile
} = require('./style-transformer')
const {
  transformScriptFile
} = require('./script-transformer')
fxy060608's avatar
fxy060608 已提交
13

fxy060608's avatar
fxy060608 已提交
14
module.exports = function transformFile(input, options) {
fxy060608's avatar
fxy060608 已提交
15

fxy060608's avatar
fxy060608 已提交
16 17 18 19
  const {
    template: templateExtname,
    style: styleExtname
  } = options.extname
fxy060608's avatar
fxy060608 已提交
20

fxy060608's avatar
fxy060608 已提交
21 22 23 24
  const filepath = input.replace(templateExtname, '')
  const deps = [
    filepath + templateExtname
  ]
fxy060608's avatar
fxy060608 已提交
25

fxy060608's avatar
fxy060608 已提交
26
  const [usingComponentsCode] = transformJsonFile(filepath + '.json', deps)
fxy060608's avatar
fxy060608 已提交
27

fxy060608's avatar
fxy060608 已提交
28 29 30 31 32 33 34
  const [templateCode, wxsCode = ''] = transformTemplateFile(filepath + templateExtname)

  const styleCode = transformStyleFile(filepath + styleExtname, options, deps) || ''
  const scriptCode = transformScriptFile(filepath + '.js', usingComponentsCode, options, deps)

  return [
    `<template>
fxy060608's avatar
fxy060608 已提交
35 36 37 38 39 40 41 42
${templateCode}
</template>
${wxsCode}
<script>
${scriptCode}
</script>
<style>
${styleCode}
fxy060608's avatar
fxy060608 已提交
43 44 45
</style>`,
    deps
  ]
fxy060608's avatar
fxy060608 已提交
46
}