Compile the blocks in Vue single-file components to JS/CSS from Babel/Sass/Stylus.
We want to publish .vue files instead of transformed .js files on npm because the .vue file is preferred in some scenarioes, e.g. vue-server-renderer can inline critical CSS from <style> blocks.
This tool will transform each block in the .vue file to their standard conterparts like sass -> css so your users don't have to install additional libraries to compile it.
yarn global add vue-compile
# or
npm i -g vue-compile# normalize a .vue file
vue-compile example.vue -o output.vue
# normalize a directory
# non .vue files will be simply copied to output directory
vue-compile src -o libThen you can publish normalized .vue files to npm registry without compiling them to .js files.
Supported transforms (via lang attribute):
<template>tag:html(default)
<script>tag:babel(default): use our default babel preset or your own.babelrctstypescript: use our default babel preset +@babel/preset-typescript
<style>tag:postcss(default): use your ownpostcss.config.jsstylussassscss
- Custom blocks: They are not touched.
Gotchas:
- We only handle
srcattribute for<style>blocks, we simply replace the extension with.cssand remove thelangattribute.
Example
In:
<template>
<div class="foo">
{{ count }}
</div>
</template>
<script>
export default {
data() {
return {
count: 0
}
}
}
</script>
<style lang="scss" src="./foo.scss">
<style lang="stylus" scoped>
@import './colors.styl'
.foo
color: $color
</style>Out:
<template>
<div class="foo">
{{ count }}
</div>
</template>
<script>
export default {
data: function data() {
return {
count: 0
};
}
};
</script>
<style src="./foo.css">
<style scoped>
.foo {
color: #f00;
}
</style>CSS files like .css .scss .sass .styl will be compiled to output directory with .css extension, all relevant import statements in .js .ts or <script> blocks will be changed to use .css extension as well.
You can exclude them using the --exclude "**/*.{css,scss,sass,styl}" flag.
- Fork it!
- Create your feature branch:
git checkout -b my-new-feature - Commit your changes:
git commit -am 'Add some feature' - Push to the branch:
git push origin my-new-feature - Submit a pull request :D
vue-compile © egoist, Released under the MIT License.
Authored and maintained by egoist with help from contributors (list).
github.com/egoist · GitHub @egoist · Twitter @_egoistlily