Skip to content

Commit 407ddbd

Browse files
kazuponyyx990803
authored andcommitted
add vue-template-compiler options passing (#976)
* feat(template-compiler): add compilerDirectives option * docs(en): add compilerDirectives option * docs(en): add compilerModules option * docs(ja): translate options * docs: updates
1 parent 39af4fc commit 407ddbd

File tree

7 files changed

+65
-2
lines changed

7 files changed

+65
-2
lines changed

docs/en/SUMMARY.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@
2626
- [cssSourceMap](options.md#csssourcemap)
2727
- [esModule](options.md#esmodule)
2828
- [preserveWhitespace](options.md#preservewhitespace)
29+
- [compilerModules](options.md#compilermodules)
30+
- [compilerDirectives](options.md#compilerdirectives)
2931
- [transformToRequire](options.md#transformtorequire)
3032
- [buble](options.md#buble)
3133
- [extractCSS](options.md#extractcss)

docs/en/options.md

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -137,6 +137,22 @@ module.exports = {
137137

138138
If set to `false`, the whitespaces between HTML tags in templates will be ignored.
139139

140+
### compilerModules
141+
142+
- type: `Array<ModuleOptions>`
143+
- default: `[]`
144+
145+
Configure `modules` options for `vue-template-compiler`, In about details, see more [`modules` option](https://github.com/vuejs/vue/blob/dev/packages/vue-template-compiler/README.md#compilercompiletemplate-options) of `vue-template-compiler`.
146+
147+
### compilerDirectives
148+
149+
- type: `{ [tag: string]: Function }`
150+
- default: `{}` (v13.0.5+)
151+
152+
> version note: in v12.x, supported in v12.2.3+
153+
154+
Configure `directives` options for `vue-template-compiler`, In about details, see more [`directives` option](https://github.com/vuejs/vue/blob/dev/packages/vue-template-compiler/README.md#compilercompiletemplate-options) of `vue-template-compiler`.
155+
140156
### transformToRequire
141157

142158
- type: `{ [tag: string]: string | Array<string> }`

docs/ja/SUMMARY.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@
2626
- [cssSourceMap](options.md#csssourcemap)
2727
- [esModule](options.md#esmodule)
2828
- [preserveWhitespace](options.md#preservewhitespace)
29+
- [compilerModules](options.md#compilermodules)
30+
- [compilerDirectives](options.md#compilerdirectives)
2931
- [transformToRequire](options.md#transformtorequire)
3032
- [buble](options.md#buble)
3133
- [extractCSS](options.md#extractcss)

docs/ja/options.md

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -132,10 +132,26 @@ module.exports = {
132132
### preserveWhitespace
133133

134134
- 型: `boolean`
135-
- デフォルトx: `true`
135+
- デフォルト: `true`
136136

137137
もし `false` に設定されていたら、テンプレート内の HTML タグ間の空白は無視されます。
138138

139+
### compilerModules
140+
141+
- 型: `Array<ModuleOptions>`
142+
- デフォルト: `[]`
143+
144+
`vue-template-compiler``modules` オプションを設定します。詳細については `vue-template-compiler`[`modules` option](https://github.com/vuejs/vue/blob/dev/packages/vue-template-compiler/README.md#compilercompiletemplate-options) を参照してください。
145+
146+
### compilerDirectives
147+
148+
- 型: `{ [tag: string]: Function }`
149+
- デフォルト: `{}` (v13.0.5 以降)
150+
151+
> バージョンメモ: v12.x においては、v12.2.3 以降からサポートされます。
152+
153+
`vue-template-compiler``directives` オプションを設定します。詳細については `vue-template-compiler`[`directives` option](https://github.com/vuejs/vue/blob/dev/packages/vue-template-compiler/README.md#compilercompiletemplate-options) を参照してください。
154+
139155
### transformToRequire
140156

141157
- 型: `{ [tag: string]: string | Array<string> }`

lib/template-compiler/index.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ module.exports = function (html) {
2323
var compilerOptions = {
2424
preserveWhitespace: options.preserveWhitespace,
2525
modules: defaultModules.concat(userModules || []),
26+
directives: vueOptions.compilerDirectives || options.compilerDirectives || {},
2627
scopeId: options.hasScoped ? options.id : null,
2728
comments: options.hasComment
2829
}

test/fixtures/custom-directive.vue

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
<template>
2+
<p v-i18n="keypath"></p>
3+
</template>

test/test.js

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ function mockRender (options, data) {
100100
}
101101
function e (text = '') {
102102
return {
103-
text: text,
103+
text: text,
104104
isComment: true
105105
}
106106
}
@@ -899,6 +899,29 @@ describe('vue-loader', function () {
899899
})
900900
})
901901

902+
it('custom compiler directives', done => {
903+
test({
904+
entry: './test/fixtures/custom-directive.vue',
905+
vue: {
906+
compilerDirectives: {
907+
i18n (el, dir) {
908+
if (dir.name === 'i18n' && dir.value) {
909+
el.i18n = dir.value
910+
if (!el.props) {
911+
el.props = []
912+
}
913+
el.props.push({ name: 'textContent', value: `_s(${JSON.stringify(dir.value)})` })
914+
}
915+
}
916+
}
917+
}
918+
}, (window, module) => {
919+
var vnode = mockRender(module)
920+
expect(vnode.data.domProps.textContent).to.equal('keypath')
921+
done()
922+
})
923+
})
924+
902925
it('functional component with styles', done => {
903926
test({
904927
entry: './test/fixtures/functional-style.vue'

0 commit comments

Comments
 (0)