use vue-filename-injector

This commit is contained in:
FairyEver 2019-09-25 17:08:45 +08:00
parent b8f5083113
commit 67e20e1b91
11 changed files with 676 additions and 976 deletions

1559
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -52,6 +52,7 @@
"vuex": "^3.1.1"
},
"devDependencies": {
"@d2-projects/vue-filename-injector": "^1.0.0",
"@kazupon/vue-i18n-loader": "^0.3.0",
"@vue/cli-plugin-babel": "^3.8.0",
"@vue/cli-plugin-eslint": "^3.8.0",

View File

@ -19,4 +19,4 @@
title="文档"
link="https://doc.d2admin.fairyever.com/zh/sys-locales/"/>
</d2-container>
</template>
</template>

View File

@ -4,7 +4,7 @@
<el-button
size="mini"
type="primary">
props.id = {{id}}
props.id = {{id}}
</el-button>
</template>
<p class="d2-mt-0">在下面的输入框输入任意字符后切换到其它页面再回到此页时输入框文字保留证明被缓存</p>

View File

@ -1,26 +0,0 @@
# Vue Filename Injector
Inject the file path of the `.vue` on `this.$options.__source`.
## Usage
`vue.config.js`:
``` js
const VueFilenameInjector = require('./path/to/vue-filename-injector')
module.exports = {
chainWebpack: config => {
// only with chainWebpack
VueFilenameInjector(config, {
propName: '__source' // default
})
}
}
```
## Relevant
https://github.com/neutrinojs/webpack-chain
https://vue-loader.vuejs.org/guide/custom-blocks.html

View File

@ -1,2 +0,0 @@
const all = require('./src/index.js')
module.exports = all

View File

@ -1,18 +0,0 @@
const { blockName } = require('./lib/config.js')
// for chainWebpack
module.exports = function(config, options) {
config.module
.rule('vue')
.use('vue-filename-injector')
.loader(require.resolve('./lib/injector.js'))
.options(options)
.after('vue-loader')
.end()
config.module
.rule('')
.resourceQuery(new RegExp(`blockType=${blockName}`))
.use('vue-filename-injector-loader')
.loader(require.resolve('./lib/loader.js'))
.end()
}

View File

@ -1,7 +0,0 @@
const defaultPropName = '__source'
const blockName = 'vue-filename-injector'
module.exports = {
defaultPropName,
blockName
}

View File

@ -1,30 +0,0 @@
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
}

View File

@ -1,3 +0,0 @@
module.exports = function (source, map) {
this.callback(null, source, map)
}

View File

@ -1,4 +1,4 @@
const VueFilenameInjector = require('./tools/vue-filename-injector')
const VueFilenameInjector = require('@d2-projects/vue-filename-injector')
const ThemeColorReplacer = require('webpack-theme-color-replacer')
const forElementUI = require('webpack-theme-color-replacer/forElementUI')