use vue-filename-injector
Former-commit-id: 46724ab769889323c0dcaabfab14e1b9b173becd
This commit is contained in:
Generated
+614
-809
File diff suppressed because it is too large
Load Diff
@@ -34,6 +34,7 @@
|
|||||||
"vuex": "^3.0.1"
|
"vuex": "^3.0.1"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
|
"@d2-projects/vue-filename-injector": "^1.0.0",
|
||||||
"@kazupon/vue-i18n-loader": "^0.4.1",
|
"@kazupon/vue-i18n-loader": "^0.4.1",
|
||||||
"@vue/cli-plugin-babel": "^3.6.0",
|
"@vue/cli-plugin-babel": "^3.6.0",
|
||||||
"@vue/cli-plugin-eslint": "^3.6.0",
|
"@vue/cli-plugin-eslint": "^3.6.0",
|
||||||
|
|||||||
@@ -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
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
const all = require('./src/index.js')
|
|
||||||
module.exports = all
|
|
||||||
@@ -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()
|
|
||||||
}
|
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
const defaultPropName = '__source'
|
|
||||||
const blockName = 'vue-filename-injector'
|
|
||||||
|
|
||||||
module.exports = {
|
|
||||||
defaultPropName,
|
|
||||||
blockName
|
|
||||||
}
|
|
||||||
@@ -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
|
|
||||||
}
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
module.exports = function (source, map) {
|
|
||||||
this.callback(null, source, map)
|
|
||||||
}
|
|
||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
const VueFilenameInjector = require('./tools/vue-filename-injector')
|
const VueFilenameInjector = require('@d2-projects/vue-filename-injector')
|
||||||
|
|
||||||
// 拼接路径
|
// 拼接路径
|
||||||
const resolve = dir => require('path').join(__dirname, dir)
|
const resolve = dir => require('path').join(__dirname, dir)
|
||||||
|
|||||||
Reference in New Issue
Block a user