Skip to content

Commit a1b8152

Browse files
committed
feat(jade): add support for jade template lang
1 parent 98cbf25 commit a1b8152

File tree

6 files changed

+158
-4
lines changed

6 files changed

+158
-4
lines changed

lib/compilers/jade-compiler.js

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
var ensureRequire = require('../ensure-require.js')
2+
3+
module.exports = function (raw) {
4+
var html;
5+
ensureRequire('jade', 'jade')
6+
var jade = require('jade')
7+
try {
8+
var html = jade.compile(raw)()
9+
} catch (err) {
10+
throw Error(err)
11+
}
12+
return html
13+
}

lib/template-compiler.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,15 @@ var chalk = require('chalk')
22
var vueCompiler = require('vue-template-compiler')
33
var transpile = require('vue-template-es2015-compiler')
44
var compilePug = require('./compilers/pug-compiler')
5+
var compileJade = require('./compilers/jade-compiler')
56

67
function getTemplateContent(templatePart) {
78
if(templatePart.lang === 'pug') {
89
return compilePug(templatePart.content)
910
}
11+
if(templatePart.lang === 'jade') {
12+
return compileJade(templatePart.content)
13+
}
1014
return templatePart.content
1115
}
1216

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
"eslint-plugin-html": "^3.1.1",
2424
"eslint-plugin-vue": "^2.1.0",
2525
"eslint-plugin-vue-libs": "^1.2.0",
26+
"jade": "^1.11.0",
2627
"jest": "^20.0.4",
2728
"pug": "^2.0.0-rc.3",
2829
"vue": "^2.4.2",

test/jade.spec.js

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
import { shallow } from 'vue-test-utils'
2+
import Jade from './resources/Jade.vue'
3+
4+
test('processes .vue file with jade template', () => {
5+
const wrapper = shallow(Jade)
6+
expect(wrapper.is('div')).toBe(true)
7+
expect(wrapper.hasClass('jade')).toBe(true)
8+
})

test/resources/Jade.vue

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
<template lang="jade">
2+
.jade
3+
</template>
4+
5+
<script>
6+
export default {
7+
name: 'jade'
8+
};
9+
</script>

yarn.lock

Lines changed: 123 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,12 @@ abab@^1.0.3:
1313
version "1.0.3"
1414
resolved "https://registry.yarnpkg.com/abab/-/abab-1.0.3.tgz#b81de5f7274ec4e756d797cd834f303642724e5d"
1515

16+
acorn-globals@^1.0.3:
17+
version "1.0.9"
18+
resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-1.0.9.tgz#55bb5e98691507b74579d0513413217c380c54cf"
19+
dependencies:
20+
acorn "^2.1.0"
21+
1622
acorn-globals@^3.0.0, acorn-globals@^3.1.0:
1723
version "3.1.0"
1824
resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-3.1.0.tgz#fd8270f71fbb4996b004fa880ee5d46573a731bf"
@@ -25,6 +31,14 @@ acorn-jsx@^3.0.0:
2531
dependencies:
2632
acorn "^3.0.4"
2733

34+
acorn@^1.0.1:
35+
version "1.2.2"
36+
resolved "https://registry.yarnpkg.com/acorn/-/acorn-1.2.2.tgz#c8ce27de0acc76d896d2b1fad3df588d9e82f014"
37+
38+
acorn@^2.1.0:
39+
version "2.7.0"
40+
resolved "https://registry.yarnpkg.com/acorn/-/acorn-2.7.0.tgz#ab6e7d9d886aaca8b085bc3312b79a198433f0e7"
41+
2842
acorn@^3.0.4, acorn@^3.1.0, acorn@~3.3.0:
2943
version "3.3.0"
3044
resolved "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a"
@@ -161,6 +175,10 @@ arrify@^1.0.0, arrify@^1.0.1:
161175
version "1.0.1"
162176
resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d"
163177

178+
asap@~1.0.0:
179+
version "1.0.0"
180+
resolved "https://registry.yarnpkg.com/asap/-/asap-1.0.0.tgz#b2a45da5fdfa20b0496fc3768cc27c12fa916a7d"
181+
164182
asap@~2.0.3:
165183
version "2.0.6"
166184
resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46"
@@ -844,6 +862,10 @@ chalk@^2.0.0, chalk@^2.1.0:
844862
escape-string-regexp "^1.0.5"
845863
supports-color "^4.0.0"
846864

865+
character-parser@1.2.1:
866+
version "1.2.1"
867+
resolved "https://registry.yarnpkg.com/character-parser/-/character-parser-1.2.1.tgz#c0dde4ab182713b919b970959a123ecc1a30fcd6"
868+
847869
character-parser@^2.1.1:
848870
version "2.2.0"
849871
resolved "https://registry.yarnpkg.com/character-parser/-/character-parser-2.2.0.tgz#c7ce28f36d4bcd9744e5ffc2c5fcde1c73261fc0"
@@ -858,7 +880,7 @@ circular-json@^0.3.1:
858880
version "0.3.3"
859881
resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.3.3.tgz#815c99ea84f6809529d2f45791bdf82711352d66"
860882

861-
clean-css@^3.3.0:
883+
clean-css@^3.1.9, clean-css@^3.3.0:
862884
version "3.4.28"
863885
resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-3.4.28.tgz#bf1945e82fc808f55695e6ddeaec01400efd03ff"
864886
dependencies:
@@ -921,6 +943,10 @@ commander@2.8.x:
921943
dependencies:
922944
graceful-readlink ">= 1.0.0"
923945

946+
commander@~2.6.0:
947+
version "2.6.0"
948+
resolved "https://registry.yarnpkg.com/commander/-/commander-2.6.0.tgz#9df7e52fb2a0cb0fb89058ee80c3104225f37e1d"
949+
924950
compare-func@^1.3.1:
925951
version "1.3.2"
926952
resolved "https://registry.yarnpkg.com/compare-func/-/compare-func-1.3.2.tgz#99dd0ba457e1f9bc722b12c08ec33eeab31fa648"
@@ -947,6 +973,12 @@ constantinople@^3.0.1:
947973
acorn "^3.1.0"
948974
is-expression "^2.0.1"
949975

976+
constantinople@~3.0.1:
977+
version "3.0.2"
978+
resolved "https://registry.yarnpkg.com/constantinople/-/constantinople-3.0.2.tgz#4b945d9937907bcd98ee575122c3817516544141"
979+
dependencies:
980+
acorn "^2.1.0"
981+
950982
content-type-parser@^1.0.1:
951983
version "1.0.1"
952984
resolved "https://registry.yarnpkg.com/content-type-parser/-/content-type-parser-1.0.1.tgz#c3e56988c53c65127fb46d4032a3a900246fdc94"
@@ -1111,6 +1143,21 @@ cryptiles@2.x.x:
11111143
dependencies:
11121144
boom "2.x.x"
11131145

1146+
css-parse@1.0.4:
1147+
version "1.0.4"
1148+
resolved "https://registry.yarnpkg.com/css-parse/-/css-parse-1.0.4.tgz#38b0503fbf9da9f54e9c1dbda60e145c77117bdd"
1149+
1150+
css-stringify@1.0.5:
1151+
version "1.0.5"
1152+
resolved "https://registry.yarnpkg.com/css-stringify/-/css-stringify-1.0.5.tgz#b0d042946db2953bb9d292900a6cb5f6d0122031"
1153+
1154+
css@~1.0.8:
1155+
version "1.0.8"
1156+
resolved "https://registry.yarnpkg.com/css/-/css-1.0.8.tgz#9386811ca82bccc9ee7fb5a732b1e2a317c8a3e7"
1157+
dependencies:
1158+
css-parse "1.0.4"
1159+
css-stringify "1.0.5"
1160+
11141161
cssom@0.3.x, "cssom@>= 0.3.2 < 0.4.0":
11151162
version "0.3.2"
11161163
resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.2.tgz#b8036170c79f07a90ff2f16e22284027a243848b"
@@ -1993,6 +2040,10 @@ is-promise@^2.0.0, is-promise@^2.1.0:
19932040
version "2.1.0"
19942041
resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa"
19952042

2043+
is-promise@~1:
2044+
version "1.0.1"
2045+
resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-1.0.1.tgz#31573761c057e33c2e91aab9e96da08cefbe76e5"
2046+
19962047
is-regex@^1.0.3, is-regex@^1.0.4:
19972048
version "1.0.4"
19982049
resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491"
@@ -2123,6 +2174,21 @@ istanbul-reports@^1.1.2:
21232174
dependencies:
21242175
handlebars "^4.0.3"
21252176

2177+
jade@^1.11.0:
2178+
version "1.11.0"
2179+
resolved "https://registry.yarnpkg.com/jade/-/jade-1.11.0.tgz#9c80e538c12d3fb95c8d9bb9559fa0cc040405fd"
2180+
dependencies:
2181+
character-parser "1.2.1"
2182+
clean-css "^3.1.9"
2183+
commander "~2.6.0"
2184+
constantinople "~3.0.1"
2185+
jstransformer "0.0.2"
2186+
mkdirp "~0.5.0"
2187+
transformers "2.1.0"
2188+
uglify-js "^2.4.19"
2189+
void-elements "~2.0.1"
2190+
with "~4.0.0"
2191+
21262192
jest-changed-files@^20.0.3:
21272193
version "20.0.3"
21282194
resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-20.0.3.tgz#9394d5cc65c438406149bef1bf4d52b68e03e3f8"
@@ -2428,6 +2494,13 @@ jsprim@^1.2.2:
24282494
json-schema "0.2.3"
24292495
verror "1.10.0"
24302496

2497+
jstransformer@0.0.2:
2498+
version "0.0.2"
2499+
resolved "https://registry.yarnpkg.com/jstransformer/-/jstransformer-0.0.2.tgz#7aae29a903d196cfa0973d885d3e47947ecd76ab"
2500+
dependencies:
2501+
is-promise "^2.0.0"
2502+
promise "^6.0.1"
2503+
24312504
jstransformer@1.0.0:
24322505
version "1.0.0"
24332506
resolved "https://registry.yarnpkg.com/jstransformer/-/jstransformer-1.0.0.tgz#ed8bf0921e2f3f1ed4d5c1a44f68709ed24722c3"
@@ -2615,7 +2688,7 @@ minimist@~0.0.1:
26152688
version "0.0.10"
26162689
resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf"
26172690

2618-
mkdirp@^0.5.1:
2691+
mkdirp@^0.5.1, mkdirp@~0.5.0:
26192692
version "0.5.1"
26202693
resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903"
26212694
dependencies:
@@ -2718,6 +2791,12 @@ optimist@^0.6.1:
27182791
minimist "~0.0.1"
27192792
wordwrap "~0.0.2"
27202793

2794+
optimist@~0.3.5:
2795+
version "0.3.7"
2796+
resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.3.7.tgz#c90941ad59e4273328923074d2cf2e7cbc6ec0d9"
2797+
dependencies:
2798+
wordwrap "~0.0.2"
2799+
27212800
optionator@^0.8.1, optionator@^0.8.2:
27222801
version "0.8.2"
27232802
resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64"
@@ -2859,12 +2938,24 @@ progress@^2.0.0:
28592938
version "2.0.0"
28602939
resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.0.tgz#8a1be366bf8fc23db2bd23f10c6fe920b4389d1f"
28612940

2941+
promise@^6.0.1:
2942+
version "6.1.0"
2943+
resolved "https://registry.yarnpkg.com/promise/-/promise-6.1.0.tgz#2ce729f6b94b45c26891ad0602c5c90e04c6eef6"
2944+
dependencies:
2945+
asap "~1.0.0"
2946+
28622947
promise@^7.0.1, promise@^7.1.1:
28632948
version "7.3.1"
28642949
resolved "https://registry.yarnpkg.com/promise/-/promise-7.3.1.tgz#064b72602b18f90f29192b8b1bc418ffd1ebd3bf"
28652950
dependencies:
28662951
asap "~2.0.3"
28672952

2953+
promise@~2.0:
2954+
version "2.0.0"
2955+
resolved "https://registry.yarnpkg.com/promise/-/promise-2.0.0.tgz#46648aa9d605af5d2e70c3024bf59436da02b80e"
2956+
dependencies:
2957+
is-promise "~1"
2958+
28682959
prop-types@^15.5.10:
28692960
version "15.5.10"
28702961
resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.5.10.tgz#2797dfc3126182e3a95e3dfbb2e893ddd7456154"
@@ -3255,6 +3346,12 @@ source-map@^0.5.3, source-map@^0.5.6, source-map@~0.5.1:
32553346
version "0.5.7"
32563347
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc"
32573348

3349+
source-map@~0.1.7:
3350+
version "0.1.43"
3351+
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.1.43.tgz#c24bc146ca517c1471f5dacbe2571b2b7f9e3346"
3352+
dependencies:
3353+
amdefine ">=0.0.4"
3354+
32583355
source-map@~0.2.0:
32593356
version "0.2.0"
32603357
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.2.0.tgz#dab73fbcfc2ba819b4de03bd6f6eaa48164b3f9d"
@@ -3460,6 +3557,14 @@ tr46@~0.0.3:
34603557
version "0.0.3"
34613558
resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a"
34623559

3560+
transformers@2.1.0:
3561+
version "2.1.0"
3562+
resolved "https://registry.yarnpkg.com/transformers/-/transformers-2.1.0.tgz#5d23cb35561dd85dc67fb8482309b47d53cce9a7"
3563+
dependencies:
3564+
css "~1.0.8"
3565+
promise "~2.0"
3566+
uglify-js "~2.2.5"
3567+
34633568
trim-newlines@^1.0.0:
34643569
version "1.0.0"
34653570
resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613"
@@ -3504,7 +3609,7 @@ ua-parser-js@^0.7.9:
35043609
version "0.7.14"
35053610
resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.14.tgz#110d53fa4c3f326c121292bbeac904d2e03387ca"
35063611

3507-
uglify-js@^2.6, uglify-js@^2.6.1:
3612+
uglify-js@^2.4.19, uglify-js@^2.6, uglify-js@^2.6.1:
35083613
version "2.8.29"
35093614
resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.8.29.tgz#29c5733148057bb4e1f75df35b7a9cb72e6a59dd"
35103615
dependencies:
@@ -3513,6 +3618,13 @@ uglify-js@^2.6, uglify-js@^2.6.1:
35133618
optionalDependencies:
35143619
uglify-to-browserify "~1.0.0"
35153620

3621+
uglify-js@~2.2.5:
3622+
version "2.2.5"
3623+
resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.2.5.tgz#a6e02a70d839792b9780488b7b8b184c095c99c7"
3624+
dependencies:
3625+
optimist "~0.3.5"
3626+
source-map "~0.1.7"
3627+
35163628
uglify-to-browserify@~1.0.0:
35173629
version "1.0.2"
35183630
resolved "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7"
@@ -3540,7 +3652,7 @@ verror@1.10.0:
35403652
core-util-is "1.0.2"
35413653
extsprintf "^1.2.0"
35423654

3543-
void-elements@^2.0.1:
3655+
void-elements@^2.0.1, void-elements@~2.0.1:
35443656
version "2.0.1"
35453657
resolved "https://registry.yarnpkg.com/void-elements/-/void-elements-2.0.1.tgz#c066afb582bb1cb4128d60ea92392e94d5e9dbec"
35463658

@@ -3622,6 +3734,13 @@ with@^5.0.0:
36223734
acorn "^3.1.0"
36233735
acorn-globals "^3.0.0"
36243736

3737+
with@~4.0.0:
3738+
version "4.0.3"
3739+
resolved "https://registry.yarnpkg.com/with/-/with-4.0.3.tgz#eefd154e9e79d2c8d3417b647a8f14d9fecce14e"
3740+
dependencies:
3741+
acorn "^1.0.1"
3742+
acorn-globals "^1.0.3"
3743+
36253744
wordwrap@0.0.2:
36263745
version "0.0.2"
36273746
resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f"

0 commit comments

Comments
 (0)