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.8 KiB
69 lines
1.8 KiB
const path = require('path')
|
|
|
|
const qs = require('querystring')
|
|
|
|
const {
|
|
md5,
|
|
removeExt,
|
|
getPlatformExts
|
|
} = require('@dcloudio/uni-cli-shared')
|
|
|
|
const {
|
|
cacheTemplate,
|
|
cacheCompilerOptions,
|
|
getPlatformTarget
|
|
} = require('./shared')
|
|
|
|
const templateExt = getPlatformExts().template
|
|
module.exports = function (content) {
|
|
if (process.env.UNI_USING_COMPONENTS) {
|
|
return require('./template-new').call(this, content)
|
|
}
|
|
this.cacheable && this.cacheable()
|
|
|
|
const realResourcePath = path.relative(process.env.UNI_INPUT_DIR, this.resourcePath)
|
|
|
|
if (process.env.UNI_USING_COMPONENTS) {
|
|
// 向 uni-template-compier 传递 emitFile
|
|
const vueLoaderOptions = this.loaders.find(loader => loader.ident === 'vue-loader-options')
|
|
if (vueLoaderOptions) {
|
|
Object.assign(vueLoaderOptions.options.compilerOptions, {
|
|
resourcePath: removeExt(realResourcePath) + templateExt,
|
|
emitFile: this.emitFile
|
|
})
|
|
} else {
|
|
throw new Error('vue-loader-options parse error')
|
|
}
|
|
} else {
|
|
if (!content.trim()) {
|
|
content = '<view></view>'
|
|
}
|
|
|
|
cacheTemplate(realResourcePath, content)
|
|
|
|
const query = qs.parse(this.resourceQuery.slice(1))
|
|
|
|
const {
|
|
id
|
|
} = query
|
|
|
|
const compilerOptions = {
|
|
scopeId: query.scoped ? `data-v-${id}` : null,
|
|
target: getPlatformTarget(),
|
|
md5: md5(content.trim() + process.env.UNI_PLATFORM),
|
|
realResourcePath
|
|
}
|
|
|
|
cacheCompilerOptions(realResourcePath, compilerOptions)
|
|
|
|
// 向 vue-loader templateLoader 传递 compilerOptions
|
|
const vueLoaderOptions = this.loaders.find(loader => loader.ident === 'vue-loader-options')
|
|
if (vueLoaderOptions) {
|
|
Object.assign(vueLoaderOptions.options.compilerOptions, compilerOptions)
|
|
} else {
|
|
throw new Error('vue-loader-options parse error')
|
|
}
|
|
}
|
|
|
|
return content
|
|
}
|
|
|