An VSCode Extension for editing Vue SFC(Single-file Component), MFC(Multi-file Component) parts(tamplate/script/style) with multi columns layout, It’s layout looks like CodePen/JSFiddle/JSBin.
Any issues please send to here:
-
Automatically open scripts, templates, style files of the same component in multipe columns;
-
Supported Vue SFC, Vue MFC, Angular MFC and other components with a specific structured files;
-
Supported a variety of built-in template, style, script extNames and you can extends it simply with
VSCode Settings
;- Scripts:
.js
,.jsx
,.ts
,.tsx
,.mjs
,.es
,.es6
,.coffee
,.dart
- Styles:
.css
,.scss
,.sass
,.less
,.styl
,.stylus
- Templates:
.html
,.htm
,.xhtml
,.ejs
,.jade
,.pug
,.hbs
,.handlebars
,.haml
,.tpl
,.mustache
,.def
,.dot
,.jst
,.dust
,.njk
- Scripts:
-
Automatically identifies the component's constituent files.
-
Support to adjust the columns order of
scripts
,templates
, andstyle
inVSCode Settings
. -
Automatically split
VUE SFC (Single-file Component)
blocks (like<template/>
,<script/>
,<style/>
) into standalone temp file on editting, and merged back they are together on saved. -
Supported to matching component’s part files in the same directory, also cross multiple directories.
- Same named files will be treated as a set of files for the same component.
┣━ Components
├┈ index.ts
├┈ common.ts
├┈ ...
├┈ base-button.ts ↘
├┈ base-button.scss → BaseButtom component
├┈ base-button.html ↗
├┈ ...
├┈ Tab.ts ↘
├┈ tab.scss → Tab component (Case insensitive)
└┈ tab.html ↗
- In the folder only contains one script file, one style file and one template file will be treated as a component.
┣━ Components
├┈ index.ts
└┈ Icon
├┈ index.ts ↘
├┈ icon.html → Icon component
└┈ icon.scss ↗
└┈ Avatar
├┈ index.tsx ↘
└┈ style.scss → Icon component (no standalone template file, includes in .tsx.)
└┈ Foo
└┈ ...
└┈ Bar
└┈ ...
- Cross directories which you specficed by
parallel.scriptFoldersForCrossMode
,parallel.styleFoldersForCrossMode
,parallel.templateFoldersForCrossMode
with inVS Code Settings
, The files which has the same file name (excludes extName) and a consistent relative path that relatived to the directories specified in the previous Settings are matched for a same component's part files.
┣━ App
├┈ app.coffee
└┈ views ★ (`views` is specificed in Settings)
└┈ product
├┈ product-list.pug ▔╲
├┈ product-item.pug ╲
└┈ product-editor.pug ╲ ▔╲
└┈ user ╲ ╲
├┈ list.html ╲ ╲
├┈ item.html +-»...╲... Product List
└┈ editor.html ╱ ╲
├┈ ... ╱ +-»... Product Editor
└┈ ctrls ╱ ╱ ★ (`ctrls` is specificed in Settings)
└┈ product ╱ ╱
├┈ product-list.js __╱ ╱
├┈ product-item.js ╱
└┈ product-editor.js __╱
└┈ user
├┈ list.ts
├┈ item.ts
└┈ editor.ts
└┈ Foo
└┈ ...
└┈ Bar
└┈ ...
SFC
like*.vue
files will splited into multi standalone script/style/template files on editing, and merge they are together after every standalone file saved automatically, Splited standalone files are storing in temp folder with named rules.vscodeparallel/components/${path_hash}/
under yourproject root
.
┣━ App
├┈ main.ts
├┈ app.vue
└┈ Components
└┈ product
├┈ product-list.vue
├┈ product-item.vue
└┈ product-editor.vue
└┈ user
├┈ list.vue ↗ item.ts ↘
├┈ item.vue .....[open]...→ item.less → ...[saved]...» item.vue
└┈ editor.vue ↘ item.html ↗
├┈ store
├┈ router
├┈ directives
├┈ utils
└┈ mixins
- Open
VSCode Settings
, press⌘ + ,
key on Mac andCtrl + ,
will openUser settings
page. - Find
Parallel Editor
section or search forparallel
prefix.
⚠️ NOTE: VS Code providedUser Settings
andWorkspace Settings
,User Settings
will applyed to all Projects, butWorkspace Settings
only apply to current project
- type:
boolean
- default:
true
- description: Wether enable auto open file with Parallel Space.
- type:
array
- default:
['component{s}', 'view{s}', 'page{s}']
- description: [Case insensitive] A set of folder-names or short-paths using for locate components.
- type:
array
- default:
['script{s}', 'controller{s}', 'ctrl{s}', 'javascript{s}', 'typescript{s}', 'coffeescript{s}', ...scriptsExtnames]
- description: [Case insensitive] A set of folder-names or short-paths using for locate script files.
- type:
array
- default:
['style{s}', ...styleExtnames]
- description: [Case insensitive] A set of folder-names or short-paths using for locate style files.
- type:
array
- default:
['template{s}', 'tpl{s}', 'view{s}', 'page{s}', 'html{s}', ...tempalteExtNames]
- description: [Case insensitive] A set of folder-names or short-paths using for locate template files.
- type:
array
- default:
[]
- built-in:
['.js', '.jsx', '.ts', '.tsx', '.mjs', '.es', '.es6', '.coffee', '.dart']
- description: A set of extnames used for detect component's script file.
Notes:
-
The extnames you setted will be merged into the built-ins and deduplicated.
-
if you want to exclude built-in script extnames, please use
!
prefix symbol. For example:{ // ... parallel.scriptExtnames: [ '!.ts', // excluded built-in .ts extname '!.tsx', // excluded built-in .tsx extname '.component.ts', // includes ], // ... }
matched results:
-
app.component.ts
(matched) -
app.module.ts
-
app.ts
-
-
-
type:
array
-
default:
[]
-
built-in:
['.css', '.scss', '.sass', '.less', '.styl', '.stylus' ]
-
description: A set of extnames used for detect component's style file.
Notes:
-
The extnames you setted will be merged into the built-ins and deduplicated.
-
if you want to exclude built-in style extnames, please use
!
prefix symbol. For example:{ // ... parallel.styleExtnames: [ '!.sass', // excluded built-in .sass extname '.component.sass', // includes `*.component.sass` ], // ... }
matched results:
-
app.component.sass
(matched) -
app.module.sass
-
app.sass
-
-
-
type:
array
-
default:
[]
-
built-in:
['.jade', '.pug', '.tpl', '.html', '.htm', '.xhtml', '.xml', '.mustache', '.ejs', '.def', '.dot', '.jst', '.handlebars', '.hbs', '.haml', '.dust', '.njk']
-
description: A set of extnames used for detect component's template file.
Notes:
-
The extnames you setted will be merged into the built-ins and deduplicated.
-
if you want to exclude built-in template extnames, please use
!
prefix symbol. For example:{ // ... parallel.templateExtnames: [ '!.html', // excluded built-in .html extname '.component.html', // includes `*.component.html` ], // ... }
matched results:
-
app.component.html
(matched) -
app.module.html
-
app.html
-
-
- type:
array
- default:
['script', 'template', 'style']
- description: Set script, template, style panels layout order in the editor.
- type:
boolean
- default:
true
- description: whether auto split templates/scripts/style tags in multiple columns view for a single-file component when open it.
- type:
array
- default:
[]
- built-in:
['.vue', '.we', '.weex']
- description: enable split mode for Single-file Component which with those file extnames.