diff --git a/package.json b/package.json
index 07a33b0f465..bd2e21abb3d 100644
--- a/package.json
+++ b/package.json
@@ -58,6 +58,8 @@
"less-loader": "^4.0.3",
"lodash": "^4.17.4",
"prettier": "^1.11.1",
+ "pug": "^2.0.3",
+ "pug-loader": "^2.4.0",
"raw-loader": "~0.5.0",
"react": "^15.2.1",
"react-dom": "^15.2.1",
diff --git a/test/TestCases.template.js b/test/TestCases.template.js
index 8242c61dd6f..c860c7211b4 100644
--- a/test/TestCases.template.js
+++ b/test/TestCases.template.js
@@ -139,8 +139,8 @@ const describeCases = config => {
loader: "coffee-loader"
},
{
- test: /\.jade$/,
- loader: "jade-loader"
+ test: /\.pug/,
+ loader: "pug-loader"
}
]
},
diff --git a/test/cases/loaders/_resources/included.jade b/test/cases/loaders/_resources/included.pug
similarity index 100%
rename from test/cases/loaders/_resources/included.jade
rename to test/cases/loaders/_resources/included.pug
diff --git a/test/cases/loaders/_resources/parent.jade b/test/cases/loaders/_resources/parent.pug
similarity index 100%
rename from test/cases/loaders/_resources/parent.jade
rename to test/cases/loaders/_resources/parent.pug
diff --git a/test/cases/loaders/_resources/template.jade b/test/cases/loaders/_resources/template.pug
similarity index 100%
rename from test/cases/loaders/_resources/template.jade
rename to test/cases/loaders/_resources/template.pug
diff --git a/test/cases/loaders/jade-loader/index.js b/test/cases/loaders/jade-loader/index.js
deleted file mode 100644
index ce442433985..00000000000
--- a/test/cases/loaders/jade-loader/index.js
+++ /dev/null
@@ -1,4 +0,0 @@
-it("should handle the jade loader correctly", function() {
- expect(require("!jade-loader?self!../_resources/template.jade")({ abc: "abc" })).toBe("
selfabc
included
");
- expect(require("../_resources/template.jade")({ abc: "abc" })).toBe("abc
included
");
-});
diff --git a/test/cases/loaders/pug-loader/index.js b/test/cases/loaders/pug-loader/index.js
new file mode 100644
index 00000000000..7348ae7df16
--- /dev/null
+++ b/test/cases/loaders/pug-loader/index.js
@@ -0,0 +1,4 @@
+it("should handle the pug loader correctly", function() {
+ expect(require("!pug-loader?self!../_resources/template.pug")({ abc: "abc" })).toBe("selfabc
included
");
+ expect(require("../_resources/template.pug")({ abc: "abc" })).toBe("abc
included
");
+});
diff --git a/test/cases/resolving/context/index.js b/test/cases/resolving/context/index.js
index 89c944dc6e1..20708273069 100644
--- a/test/cases/resolving/context/index.js
+++ b/test/cases/resolving/context/index.js
@@ -5,7 +5,7 @@ it("should resolve loaders relative to require", function() {
query: "?query",
prev: "module.exports = \"error\";"
});
- expect(require("!./loaders/queryloader?query!./node_modules/subcontent/" + test + ".jade")).toEqual({
+ expect(require("!./loaders/queryloader?query!./node_modules/subcontent/" + test + ".pug")).toEqual({
resourceQuery: "",
query: "?query",
prev: "xyz: abc"
diff --git a/test/cases/resolving/context/node_modules/subcontent/test.jade b/test/cases/resolving/context/node_modules/subcontent/test.pug
similarity index 100%
rename from test/cases/resolving/context/node_modules/subcontent/test.jade
rename to test/cases/resolving/context/node_modules/subcontent/test.pug
diff --git a/yarn.lock b/yarn.lock
index d5e28b23112..93b77cf746c 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -16,40 +16,15 @@
esutils "^2.0.2"
js-tokens "^3.0.0"
-"@babel/generator@^7.0.0-beta.40":
- version "7.0.0-beta.46"
- resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.0.0-beta.46.tgz#6f57159bcc28bf8c3ed6b549789355cebfa3faa7"
- dependencies:
- "@babel/types" "7.0.0-beta.46"
- jsesc "^2.5.1"
- lodash "^4.2.0"
- source-map "^0.5.0"
- trim-right "^1.0.1"
+"@types/babel-types@*", "@types/babel-types@^7.0.0":
+ version "7.0.2"
+ resolved "https://registry.yarnpkg.com/@types/babel-types/-/babel-types-7.0.2.tgz#63dc3e5e7f6367e1819d2bba5213783cd926c5d5"
-"@babel/highlight@7.0.0-beta.46":
- version "7.0.0-beta.46"
- resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.0.0-beta.46.tgz#c553c51e65f572bdedd6eff66fc0bb563016645e"
+"@types/babylon@^6.16.2":
+ version "6.16.2"
+ resolved "https://registry.yarnpkg.com/@types/babylon/-/babylon-6.16.2.tgz#062ce63b693d9af1c246f5aedf928bc9c30589c8"
dependencies:
- chalk "^2.0.0"
- esutils "^2.0.2"
- js-tokens "^3.0.0"
-
-"@babel/template@^7.0.0-beta.40":
- version "7.0.0-beta.46"
- resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.0.0-beta.46.tgz#8b23982411d5b5dbfa479437bfe414adb1411bb9"
- dependencies:
- "@babel/code-frame" "7.0.0-beta.46"
- "@babel/types" "7.0.0-beta.46"
- babylon "7.0.0-beta.46"
- lodash "^4.2.0"
-
-"@babel/types@7.0.0-beta.46", "@babel/types@^7.0.0-beta.40":
- version "7.0.0-beta.46"
- resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.0.0-beta.46.tgz#eb84399a699af9fcb244440cce78e1acbeb40e0c"
- dependencies:
- esutils "^2.0.2"
- lodash "^4.2.0"
- to-fast-properties "^2.0.0"
+ "@types/babel-types" "*"
"@types/node@^9.6.4":
version "9.6.6"
@@ -230,6 +205,12 @@ acorn-globals@^1.0.3:
dependencies:
acorn "^2.1.0"
+acorn-globals@^3.0.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-3.1.0.tgz#fd8270f71fbb4996b004fa880ee5d46573a731bf"
+ dependencies:
+ acorn "^4.0.4"
+
acorn-globals@^4.1.0:
version "4.1.0"
resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-4.1.0.tgz#ab716025dbe17c54d3ef81d32ece2b2d99fe2538"
@@ -250,10 +231,14 @@ acorn@^2.1.0:
version "2.7.0"
resolved "https://registry.yarnpkg.com/acorn/-/acorn-2.7.0.tgz#ab6e7d9d886aaca8b085bc3312b79a198433f0e7"
-acorn@^3.0.4:
+acorn@^3.0.4, acorn@^3.1.0:
version "3.3.0"
resolved "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a"
+acorn@^4.0.4, acorn@~4.0.2:
+ version "4.0.13"
+ resolved "https://registry.yarnpkg.com/acorn/-/acorn-4.0.13.tgz#105495ae5361d697bd195c825192e1ad7f253787"
+
acorn@^5.0.0, acorn@^5.5.0:
version "5.5.3"
resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.5.3.tgz#f473dd47e0277a08e28e9bec5aeeb04751f0b8c9"
@@ -1008,6 +993,12 @@ character-parser@1.2.1:
version "1.2.1"
resolved "https://registry.yarnpkg.com/character-parser/-/character-parser-1.2.1.tgz#c0dde4ab182713b919b970959a123ecc1a30fcd6"
+character-parser@^2.1.1:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/character-parser/-/character-parser-2.2.0.tgz#c7ce28f36d4bcd9744e5ffc2c5fcde1c73261fc0"
+ dependencies:
+ is-regex "^1.0.3"
+
chardet@^0.4.0:
version "0.4.2"
resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.4.2.tgz#b5473b33dc97c424e5d98dc87d55d4d8a29c8bf2"
@@ -1075,6 +1066,12 @@ clean-css@^3.1.9:
commander "2.8.x"
source-map "0.4.x"
+clean-css@^4.1.11:
+ version "4.1.11"
+ resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.1.11.tgz#2ecdf145aba38f54740f26cefd0ff3e03e125d6a"
+ dependencies:
+ source-map "0.5.x"
+
cli-cursor@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5"
@@ -1248,6 +1245,15 @@ console-control-strings@^1.0.0, console-control-strings@~1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e"
+constantinople@^3.0.1:
+ version "3.1.2"
+ resolved "https://registry.yarnpkg.com/constantinople/-/constantinople-3.1.2.tgz#d45ed724f57d3d10500017a7d3a889c1381ae647"
+ dependencies:
+ "@types/babel-types" "^7.0.0"
+ "@types/babylon" "^6.16.2"
+ babel-types "^6.26.0"
+ babylon "^6.18.0"
+
constantinople@~3.0.1:
version "3.0.2"
resolved "https://registry.yarnpkg.com/constantinople/-/constantinople-3.0.2.tgz#4b945d9937907bcd98ee575122c3817516544141"
@@ -1539,9 +1545,9 @@ decode-uri-component@^0.2.0:
version "0.2.0"
resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545"
-deep-extend@~0.4.0:
- version "0.4.2"
- resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.4.2.tgz#48b699c27e334bf89f10892be432f6e4c7d34a7f"
+deep-extend@^0.5.1:
+ version "0.5.1"
+ resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.5.1.tgz#b894a9dd90d3023fbf1c55a394fb858eb2066f1f"
deep-is@~0.1.3:
version "0.1.3"
@@ -1650,6 +1656,10 @@ doctrine@^2.1.0:
dependencies:
esutils "^2.0.2"
+doctypes@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/doctypes/-/doctypes-1.1.0.tgz#ea80b106a87538774e8a3a4a5afe293de489e0a9"
+
domain-browser@^1.1.1:
version "1.2.0"
resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda"
@@ -2825,6 +2835,13 @@ is-equal-shallow@^0.1.3:
dependencies:
is-primitive "^2.0.0"
+is-expression@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/is-expression/-/is-expression-3.0.0.tgz#39acaa6be7fd1f3471dc42c7416e61c24317ac9f"
+ dependencies:
+ acorn "~4.0.2"
+ object-assign "^4.0.1"
+
is-extendable@^0.1.0, is-extendable@^0.1.1:
version "0.1.1"
resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89"
@@ -2963,7 +2980,7 @@ is-property@^1.0.0:
version "1.0.2"
resolved "https://registry.yarnpkg.com/is-property/-/is-property-1.0.2.tgz#57fe1c4e48474edd65b09911f26b1cd4095dda84"
-is-regex@^1.0.4:
+is-regex@^1.0.3, is-regex@^1.0.4:
version "1.0.4"
resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491"
dependencies:
@@ -3472,6 +3489,10 @@ js-base64@^2.1.9:
version "2.4.3"
resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.4.3.tgz#2e545ec2b0f2957f41356510205214e98fad6582"
+js-stringify@^1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/js-stringify/-/js-stringify-1.0.2.tgz#1736fddfd9724f28a3682adc6230ae7e4e9679db"
+
js-tokens@^3.0.0, js-tokens@^3.0.2:
version "3.0.2"
resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b"
@@ -3605,6 +3626,13 @@ jstransformer@0.0.2:
is-promise "^2.0.0"
promise "^6.0.1"
+jstransformer@1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/jstransformer/-/jstransformer-1.0.0.tgz#ed8bf0921e2f3f1ed4d5c1a44f68709ed24722c3"
+ dependencies:
+ is-promise "^2.0.0"
+ promise "^7.0.1"
+
kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0:
version "3.2.2"
resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64"
@@ -4783,7 +4811,7 @@ promise@^6.0.1:
dependencies:
asap "~1.0.0"
-promise@^7.1.1:
+promise@^7.0.1, promise@^7.1.1:
version "7.3.1"
resolved "https://registry.yarnpkg.com/promise/-/promise-7.3.1.tgz#064b72602b18f90f29192b8b1bc418ffd1ebd3bf"
dependencies:
@@ -4828,6 +4856,107 @@ public-encrypt@^4.0.0:
parse-asn1 "^5.0.0"
randombytes "^2.0.1"
+pug-attrs@^2.0.3:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/pug-attrs/-/pug-attrs-2.0.3.tgz#a3095f970e64151f7bdad957eef55fb5d7905d15"
+ dependencies:
+ constantinople "^3.0.1"
+ js-stringify "^1.0.1"
+ pug-runtime "^2.0.4"
+
+pug-code-gen@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/pug-code-gen/-/pug-code-gen-2.0.1.tgz#0951ec83225d74d8cfc476a7f99a259b5f7d050c"
+ dependencies:
+ constantinople "^3.0.1"
+ doctypes "^1.1.0"
+ js-stringify "^1.0.1"
+ pug-attrs "^2.0.3"
+ pug-error "^1.3.2"
+ pug-runtime "^2.0.4"
+ void-elements "^2.0.1"
+ with "^5.0.0"
+
+pug-error@^1.3.2:
+ version "1.3.2"
+ resolved "https://registry.yarnpkg.com/pug-error/-/pug-error-1.3.2.tgz#53ae7d9d29bb03cf564493a026109f54c47f5f26"
+
+pug-filters@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/pug-filters/-/pug-filters-3.1.0.tgz#27165555bc04c236e4aa2b0366246dfa021b626e"
+ dependencies:
+ clean-css "^4.1.11"
+ constantinople "^3.0.1"
+ jstransformer "1.0.0"
+ pug-error "^1.3.2"
+ pug-walk "^1.1.7"
+ resolve "^1.1.6"
+ uglify-js "^2.6.1"
+
+pug-lexer@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/pug-lexer/-/pug-lexer-4.0.0.tgz#210c18457ef2e1760242740c5e647bd794cec278"
+ dependencies:
+ character-parser "^2.1.1"
+ is-expression "^3.0.0"
+ pug-error "^1.3.2"
+
+pug-linker@^3.0.5:
+ version "3.0.5"
+ resolved "https://registry.yarnpkg.com/pug-linker/-/pug-linker-3.0.5.tgz#9e9a7ae4005682d027deeb96b000f88eeb83a02f"
+ dependencies:
+ pug-error "^1.3.2"
+ pug-walk "^1.1.7"
+
+pug-load@^2.0.11:
+ version "2.0.11"
+ resolved "https://registry.yarnpkg.com/pug-load/-/pug-load-2.0.11.tgz#e648e57ed113fe2c1f45d57858ea2bad6bc01527"
+ dependencies:
+ object-assign "^4.1.0"
+ pug-walk "^1.1.7"
+
+pug-loader@^2.4.0:
+ version "2.4.0"
+ resolved "https://registry.yarnpkg.com/pug-loader/-/pug-loader-2.4.0.tgz#18eebdda045d9c31c2856f1cc3ceb8d3df7ca49a"
+ dependencies:
+ loader-utils "^1.1.0"
+ pug-walk "^1.0.0"
+ resolve "^1.1.7"
+
+pug-parser@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/pug-parser/-/pug-parser-5.0.0.tgz#e394ad9b3fca93123940aff885c06e44ab7e68e4"
+ dependencies:
+ pug-error "^1.3.2"
+ token-stream "0.0.1"
+
+pug-runtime@^2.0.4:
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/pug-runtime/-/pug-runtime-2.0.4.tgz#e178e1bda68ab2e8c0acfc9bced2c54fd88ceb58"
+
+pug-strip-comments@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/pug-strip-comments/-/pug-strip-comments-1.0.3.tgz#f1559592206edc6f85310dacf4afb48a025af59f"
+ dependencies:
+ pug-error "^1.3.2"
+
+pug-walk@^1.0.0, pug-walk@^1.1.7:
+ version "1.1.7"
+ resolved "https://registry.yarnpkg.com/pug-walk/-/pug-walk-1.1.7.tgz#c00d5c5128bac5806bec15d2b7e7cdabe42531f3"
+
+pug@^2.0.3:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/pug/-/pug-2.0.3.tgz#71cba82537c95a5eab7ed04696e4221f53aa878e"
+ dependencies:
+ pug-code-gen "^2.0.1"
+ pug-filters "^3.1.0"
+ pug-lexer "^4.0.0"
+ pug-linker "^3.0.5"
+ pug-load "^2.0.11"
+ pug-parser "^5.0.0"
+ pug-runtime "^2.0.4"
+ pug-strip-comments "^1.0.3"
+
pump@^2.0.0, pump@^2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909"
@@ -4923,10 +5052,10 @@ raw-loader@~0.5.0, raw-loader@~0.5.1:
resolved "https://registry.yarnpkg.com/raw-loader/-/raw-loader-0.5.1.tgz#0c3d0beaed8a01c966d9787bf778281252a979aa"
rc@^1.1.7:
- version "1.2.6"
- resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.6.tgz#eb18989c6d4f4f162c399f79ddd29f3835568092"
+ version "1.2.7"
+ resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.7.tgz#8a10ca30d588d00464360372b890d06dacd02297"
dependencies:
- deep-extend "~0.4.0"
+ deep-extend "^0.5.1"
ini "~1.3.0"
minimist "^1.2.0"
strip-json-comments "~2.0.1"
@@ -5206,7 +5335,7 @@ resolve@1.1.7, resolve@1.1.x:
version "1.1.7"
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b"
-resolve@^1.3.3:
+resolve@^1.1.6, resolve@^1.1.7, resolve@^1.3.3:
version "1.7.1"
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.7.1.tgz#aadd656374fd298aee895bc026b8297418677fd3"
dependencies:
@@ -5517,7 +5646,7 @@ source-map@0.4.x, source-map@^0.4.4:
dependencies:
amdefine ">=0.0.4"
-source-map@^0.5.0, source-map@^0.5.3, source-map@^0.5.6, source-map@~0.5.1, source-map@~0.5.6:
+source-map@0.5.x, source-map@^0.5.3, source-map@^0.5.6, source-map@~0.5.1, source-map@~0.5.6:
version "0.5.7"
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc"
@@ -5884,6 +6013,10 @@ to-regex@^3.0.1, to-regex@^3.0.2:
regex-not "^1.0.2"
safe-regex "^1.1.0"
+token-stream@0.0.1:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/token-stream/-/token-stream-0.0.1.tgz#ceeefc717a76c4316f126d0b9dbaa55d7e7df01a"
+
topo@2.x.x:
version "2.0.2"
resolved "https://registry.yarnpkg.com/topo/-/topo-2.0.2.tgz#cd5615752539057c0dc0491a621c3bc6fbe1d182"
@@ -5970,7 +6103,7 @@ uglify-es@^3.3.4:
commander "~2.13.0"
source-map "~0.6.1"
-uglify-js@^2.4.19, uglify-js@^2.6:
+uglify-js@^2.4.19, uglify-js@^2.6, uglify-js@^2.6.1:
version "2.8.29"
resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.8.29.tgz#29c5733148057bb4e1f75df35b7a9cb72e6a59dd"
dependencies:
@@ -6152,7 +6285,7 @@ vm-browserify@0.0.4, vm-browserify@~0.0.0:
dependencies:
indexof "0.0.1"
-void-elements@~2.0.1:
+void-elements@^2.0.1, void-elements@~2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/void-elements/-/void-elements-2.0.1.tgz#c066afb582bb1cb4128d60ea92392e94d5e9dbec"
@@ -6270,6 +6403,13 @@ window-size@0.1.0:
version "0.1.0"
resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d"
+with@^5.0.0:
+ version "5.1.1"
+ resolved "https://registry.yarnpkg.com/with/-/with-5.1.1.tgz#fa4daa92daf32c4ea94ed453c81f04686b575dfe"
+ dependencies:
+ acorn "^3.1.0"
+ acorn-globals "^3.0.0"
+
with@~4.0.0:
version "4.0.3"
resolved "https://registry.yarnpkg.com/with/-/with-4.0.3.tgz#eefd154e9e79d2c8d3417b647a8f14d9fecce14e"