Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

*.vue files, Visual Studio 2017 & TypeScript

Is it possible to edit vuejs's *.vue component files in Visual Studio 2017 with highlighting and intellisense support for HTML, TypeScript AND SCSS?

At the moment, I'm separating the different sections to different files:

<!-- my-component.vue opened in HTML editor -->
<template>
    <div> text </div>
</template>
<script src="./path/to/my-component.ts"></script>
<style src="./path/to/my-component.scss"></style>
like image 796
Dror Weiss Avatar asked Jan 12 '17 21:01

Dror Weiss


People also ask

What are .VUE files?

Vue Single-File Components (a.k.a. *.vue files, abbreviated as SFC) is a special file format that allows us to encapsulate the template, logic, and styling of a Vue component in a single file.

How do I run a Vue js file?

js App" on http://localhost:8080 in your browser. You can press Ctrl+C to stop the vue-cli-service server. cd my-app code . VS Code will launch and display your Vue application in the File Explorer.

How do I debug Vue code in Visual Studio?

Go to the Debug view, select the 'vuejs: chrome/firefox' configuration, then press F5 or click the green play button.


2 Answers

After some time, I actually have it all set up in Visual Studio 2017. (Everything except scss)

Here is what I did:

  1. Install vue-cli

  2. Install VuePack - https://marketplace.visualstudio.com/items?itemName=MadsKristensen.VuejsPack-18329

  3. Run this line in command prompt: dotnet new --install Microsoft.AspNetCore.SpaTemplates::*

  4. In command prompt, go to the directory where you want to create your application and run this:

    dotnet new vue

    npm install

    This will create the project for you. You can now open the project/add the project in Visual studio 2017.

    However the compiler did not recognize .vue files. I had to add one more manual step:

  5. In the root of the application there is a file webpack.config.js, look for module => rules, you need to add a new rule:

    { test: /\.vue$/, include: /ClientApp/, loader: 'vue-loader', options: { loaders: { js: 'awesome-typescript-loader?silent=true' } } },

  6. After this I ran into some TypeScript compilation errors - the application would just get stuck on Loading... - to fix this you need to edit tsconfig.json - add the following:

    "awesomeTypescriptLoaderOptions": { "useWebpackText": true, "useCache": true, "useTranspileModule": true }

After this I ran the project without issues.


Other interesting resources that can help you:

http://www.dotnetcurry.com/aspnet/1383/modern-web-dev-aspnet-core-webpack-vuejs

https://github.com/MarkPieszak/aspnetcore-Vue-starter

https://herringtondarkholme.github.io/2016/10/03/vue2-ts2/

like image 82
Simcha Khabinsky Avatar answered Sep 20 '22 04:09

Simcha Khabinsky


Currently the answer is no. The HTML editor is aware of some languages that can be hosted, such as CSS, JavaScript, and Razor (ASP.NET). In these cases, the editor does some fancy things to map sections of the text to each language service. However, TypeScript and SCSS do not support that at the moment, and as far as I know it's not on the backlog for either team.

Please request this using the VS Feedback tool. Since vuejs support this, it bears some weight and may get taken into account for future feature planning. A customer report can sometimes carry more weight than mine.

(Full Disclosure: I work on the team that owns the HTML and SCSS editors in VS. We don't own TypeScript, but we work with the team for things like this.)

like image 31
Jimmy Avatar answered Sep 20 '22 04:09

Jimmy