file-transformer.js 1.1 KB
Newer Older
fxy060608's avatar
fxy060608 已提交
1 2
const path = require('path')

fxy060608's avatar
fxy060608 已提交
3 4 5 6 7 8 9 10 11 12 13 14
const {
  transformJsonFile
} = require('./json-transformer')
const {
  transformTemplateFile
} = require('./template-transformer')
const {
  transformStyleFile
} = require('./style-transformer')
const {
  transformScriptFile
} = require('./script-transformer')
fxy060608's avatar
fxy060608 已提交
15

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

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

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

fxy060608's avatar
fxy060608 已提交
28
  const [jsCode] = transformJsonFile(filepath + '.json', deps)
fxy060608's avatar
fxy060608 已提交
29

fxy060608's avatar
fxy060608 已提交
30 31 32
  const [templateCode, wxsCode = '', wxsFiles = []] = transformTemplateFile(filepath + templateExtname, {
    filename: path.basename(filepath)
  })
fxy060608's avatar
fxy060608 已提交
33 34

  const styleCode = transformStyleFile(filepath + styleExtname, options, deps) || ''
fxy060608's avatar
fxy060608 已提交
35
  const scriptCode = transformScriptFile(filepath + '.js', jsCode, options, deps)
fxy060608's avatar
fxy060608 已提交
36 37 38

  return [
    `<template>
fxy060608's avatar
fxy060608 已提交
39 40 41 42 43 44 45 46
${templateCode}
</template>
${wxsCode}
<script>
${scriptCode}
</script>
<style>
${styleCode}
fxy060608's avatar
fxy060608 已提交
47
</style>`,
fxy060608's avatar
fxy060608 已提交
48 49
    deps,
    wxsFiles
fxy060608's avatar
fxy060608 已提交
50
  ]
fxy060608's avatar
fxy060608 已提交
51
}