How can I tell Vue-cli where my app's entrypoint is?

Caleb Jay picture Caleb Jay · Oct 16, 2018 · Viewed 8.4k times · Source

My app is split into an API and a UI portion. Deployment strategy requires they share a package.json. The file structure looks like

client/
       src/
           main.js
api/
package.json
vue.config.js

I am using the standard vue-cli scripts.

package.json

"scripts": {
  "serve:ui": "vue-cli-service serve",
  "build:ui": "vue-cli-service build",
  "lint:ui": "vue-cli-service lint",
  "test:unit": "vue-cli-service test:unit"
}

When I do npm run serve:ui, I get

This relative module was not found:

* ./src/main.js in multi ./node_modules/@vue/cli-service/node_modules/webpack-dev-server/client?http://10.0.2.15:8080/sockjs-node ./node_modules/@vue/cli-service/node_modules/webpack/hot/dev-server.js ./src/main.js

So, I tried modifying vue.config.json as per the docs:

vue.config.js

const path = require('path');
module.exports = {
    entry: {
        app: './client/src/main.js'
    }
}

Now, I get the error:

 ERROR  Invalid options in vue.config.js: "entry" is not allowed

How do I tell vue-cli where my app entrypoint is?

Answer

Caleb Jay picture Caleb Jay · Oct 16, 2018

I discovered based on this Github Issue that you can pass a custom entrypoint only in the command line. This is true for both build and serve. See also in the documentation, a single block of code demonstrating this.

Usage: vue-cli-service serve [options] [entry]

I changed my script to

    "serve:ui": "vue-cli-service serve client/src/main.js",

and now it can find the entrypoint.