Files
d2-admin-start-kit/tools/vue-filename-injector/src/lib/injector.js
T
liyang d07d15ed8c D2Admin 1.7
Former-commit-id: 3010ce31114fdc121006451c72f9e18306239fd2
2019-05-07 09:26:18 +08:00

31 lines
754 B
JavaScript
Executable File

const path = require('path')
const loaderUtils = require('loader-utils')
const { blockName, defaultPropName } = require('./config.js')
module.exports = function (content /*, map, meta */) {
const loaderContext = this
const {
rootContext,
resourcePath
} = loaderContext
const context = rootContext || process.cwd()
const options = loaderUtils.getOptions(loaderContext) || {}
const rawShortFilePath = path
.relative(context, resourcePath)
.replace(/^(\.\.[\/\\])+/, '')
const propName = options.propName || defaultPropName
content += `
<${blockName}>
export default function (Component) {
Component.options.${propName} = ${JSON.stringify(rawShortFilePath.replace(/\\/g, '/'))}
}
</${blockName}>
`
return content
}