Is it possible to build a vue application without vue-cli?
Solution 1:
Yes, of course.
vue-cli
uses webpack under-the-hood, but it abstracts away all the tedious webpack configuration with a sensible default so you can focus on just writing your application.
If you need to alter the way your application is built, for example you want to compress image assets, then unless vue-cli
provides a config option for your specific need then you will have to alter the webpack configuration in some way (e.g. adding a new loader or altering the configuration of an existing loader, etc). vue-cli
does expose some ways to do this, but you don't have full control over the webpack build from the beginning.
I usually have very specific requirements for how I want my web apps to be built, so I opt for the DIY webpack solution so that I have full control over all aspects of the build.
If you don't want to use vue-cli
but still want to use webpack, then at minimum I would suggest the following packages:
webpack
vue
-
vue-loader
for compiling and bundling.vue
single file components -
babel-loader
for transpiling JavaScript -
file-loader
for image assets -
style-loader
for injecting styles into the DOM at runtime -
css-loader
for loading modules referenced in CSS files like images and fonts
Solution 2:
I'm using Vue 3 without the Vue CLI in an existing application that has a custom Webpack configuration, and the following steps worked for me:
Install Vue3:
npm install --save vue@next
Install vue-loader
(v16 or newer) and the new template compiler:
npm install --save-dev vue-loader@^16 @vue/compiler-sfc
Webpack Config:
const { VueLoaderPlugin } = require('vue-loader'); // load plugin
//...
module: {
rules: [
{
test: /\.vue$/,
exclude: /(node_modules)/,
use: [
{ loader: 'vue-loader' }
]
}
]
},
plugins: [
new VueLoaderPlugin()
]
Thanks to Webpack for Vue 3 for the tip on installing the compiler without the CLI; I couldn't find that in the Vue 3 documentation.