diff --git a/meta.js b/meta.js
index e2e2fdffa1..bf65375d59 100644
--- a/meta.js
+++ b/meta.js
@@ -40,6 +40,10 @@ module.exports = {
}
]
},
+ "typescript": {
+ "type": "confirm",
+ "message": "Setup Vue build with TypeScript?"
+ },
"router": {
"type": "confirm",
"message": "Install vue-router?"
@@ -86,7 +90,10 @@ module.exports = {
"test/unit/**/*": "unit",
"build/webpack.test.conf.js": "unit",
"test/e2e/**/*": "e2e",
- "src/router/**/*": "router"
+ "src/router/**/*": "router",
+ "src/**/*.ts": "typescript",
+ "tsconfig.json": "typescript",
+ "src/**/*.js": "!typescript"
},
"completeMessage": "To get started:\n\n {{^inPlace}}cd {{destDirName}}\n {{/inPlace}}npm install\n npm run dev\n\nDocumentation can be found at https://vuejs-templates.github.io/webpack"
};
diff --git a/template/build/vue-loader.conf.js b/template/build/vue-loader.conf.js
index 7aee79bae4..a6d1e1069b 100644
--- a/template/build/vue-loader.conf.js
+++ b/template/build/vue-loader.conf.js
@@ -8,5 +8,6 @@ module.exports = {
? config.build.productionSourceMap
: config.dev.cssSourceMap,
extract: isProduction
- })
+ }){{#typescript}},
+ esModule: true{{/typescript}}
}
diff --git a/template/build/webpack.base.conf.js b/template/build/webpack.base.conf.js
index 0f161198d4..6b89577b1a 100644
--- a/template/build/webpack.base.conf.js
+++ b/template/build/webpack.base.conf.js
@@ -9,7 +9,7 @@ function resolve (dir) {
module.exports = {
entry: {
- app: './src/main.js'
+ app: './src/main.{{#typescript}}t{{else}}j{{/typescript}}s'
},
output: {
path: config.build.assetsRoot,
@@ -19,7 +19,7 @@ module.exports = {
: config.dev.assetsPublicPath
},
resolve: {
- extensions: ['.js', '.vue', '.json'],
+ extensions: ['.js', '.vue', '.json'{{#typescript}},'.ts'{{/typescript}}],
alias: {
{{#if_eq build "standalone"}}
'vue$': 'vue/dist/vue.esm.js',
@@ -44,7 +44,16 @@ module.exports = {
test: /\.vue$/,
loader: 'vue-loader',
options: vueLoaderConfig
+ },{{#typescript}}
+ // Documentation @ https://www.npmjs.com/package/ts-loader
+ {
+ test: /\.ts$/,
+ loader: 'ts-loader',
+ options: {
+ appendTsSuffixTo: [/\.vue$/]
+ }
},
+ {{/typescript}}
{
test: /\.js$/,
loader: 'babel-loader',
diff --git a/template/package.json b/template/package.json
index 3f496f06ad..b36b2db314 100644
--- a/template/package.json
+++ b/template/package.json
@@ -15,7 +15,10 @@
},
"dependencies": {
"vue": "^2.3.3"{{#router}},
- "vue-router": "^2.3.1"{{/router}}
+ "vue-router": "^2.3.1"{{/router}}{{#typescript}},
+ "ts-loader": "^2.2.1",
+ "typescript": "^2.4.1",
+ "vue-class-component": "^5.0.1"{{/typescript}}
},
"devDependencies": {
"autoprefixer": "^6.7.2",
diff --git a/template/src/App.vue b/template/src/App.vue
index 74a25d1dfa..76cd769acb 100644
--- a/template/src/App.vue
+++ b/template/src/App.vue
@@ -8,17 +8,30 @@
{{/router}}
-
-
diff --git a/template/src/components/Hello.vue b/template/src/components/Hello.vue
index dc7251a0f2..6d1a09cdfd 100644
--- a/template/src/components/Hello.vue
+++ b/template/src/components/Hello.vue
@@ -1,7 +1,7 @@
\{{ msg }}
-
Essential Links
+
Essential Links
-