Come distribuire l'app Vue?


131

Cosa devo fare dopo aver sviluppato un'app Vue con vue-cli?

In Angular c'erano alcuni comandi che raggruppavano tutti gli script in un singolo script e quindi questi file venivano inviati all'host.

C'è qualcosa di uguale in Vue ?


Dovrebbe far parte del cli, ecco la pagina del documento di distribuzione vuejs.org/v2/guide/deployment.html A seconda della versione in uso, del modello utilizzato, probabilmente differirà leggermente. Ma dovresti specificare che stai facendo una build di produzione come nei documenti.
Swimburger,

2
Uso 2.2.1 vue. Vedo la documentazione, ma non ci sono informazioni sulla distribuzione. Non sto usando nodejs su hoster. Quindi, quando lo avvio in localhost funziona, ma quando scarico tutti i file per l'hoster, non c'è nulla nella pagina
artem0071

8
Quando fai una build, probabilmente compilerà tutti i file (html, css, js) in una cartella / dist. Questa cartella dist dovrebbe essere la radice dell'app sul tuo hosting. (Non ho ancora usato Vue2, ma scommetto che sarà lì)
Swimburger

Ehi ragazzi ho avuto la stessa prob la scorsa settimana e ho scritto smth se aiuta qualcuno: medium.com/@seenickcode/…
seenickcode

Ho caricato i file dalla cartella dist a cpanel, ma mostra solo un vuoto
Fayaz

Risposte:


171

Penso che tu abbia creato il tuo progetto in questo modo:

vue init webpack myproject

Bene, ora puoi correre

npm run build

Copia index.html e / dist / cartella nella directory principale del tuo sito web. Fatto.


1
Non c'è bisogno di correre npm starto qualcosa del genere?
nu everest,

@nueverest se hai appena creato il tuo progetto con vue init webpack myprojectte vedrai ulteriori istruzioni nella tua console: cd myproject, npm install. Dopo che npm installtutti i pacchetti sono stati scaricati e Vue è in grado di compilare sia con npm run devserver di sviluppo + hot ricaric, sia con npm run buildper creare un pacchetto distribuibile.
Egor Stambakio,

Questo non sembra funzionare con il router Vue ... Sto facendo qualcosa di sbagliato?
Andy Hayden,

1
@AndyHayden un AWS S3 controlla se 1) indice e documento di errore === index.html; 2) le politiche sono stabilite per il sito Web statico ; 3) il tuo build.jsè nella distcartella su s3 ed index.htmlè nella radice.
Egor Stambakio,

9
la risposta dovrebbe essere "il contenuto della distcartella è tutto ciò che serve. Non è necessario copiarlo /index.htmlma è necessario solo il index.htmlcontenuto della distcartella. Inoltre, prima di eseguire npm run buildè necessario configurare il percorso di produzione in config/index.js".
David 天宇 Wong,

24

Se hai creato il tuo progetto usando:

vue init webpack myproject

Dovresti impostare la NODE_ENVproduzione e l'esecuzione, perché il progetto ha un web pack configurato sia per lo sviluppo che per la produzione:

NODE_ENV=production npm run build

Copia la dist/directory nella directory principale del tuo sito web.

Se stai eseguendo la distribuzione con Docker, avresti bisogno di un server express, che serve la dist/directory.

Dockerfile

FROM node:carbon

RUN mkdir -p /usr/src/app

WORKDIR /usr/src/app
ADD . /usr/src/app
RUN npm install

ENV NODE_ENV=production

RUN npm run build

# Remove unused directories
RUN rm -rf ./src
RUN rm -rf ./build

# Port to expose
EXPOSE 8080
CMD [ "npm", "start" ]

esponi quel contenitore all'esterno o usi nginx o apache come proxy?
Hakim

Sì,
useresti

paste.ubuntu.com/p/dryhSwnYh5 WORKDIR / usr / src / app può essere WORKDIR / app? anche CMD ["http-server", "dist"] necessario per servire tramite server http? anziché CMD ["npm", "start"]
LOG_TAG il

Versione: webpack 3.12.0 Tempo: 16548ms Dimensione asset Pezzi Chunk Nomi build.js 2,15 MB 0 [emesso] [grande] main build.js.map 9,74 MB 0 [emesso] main - Viene visualizzato dopo aver eseguito il cmd sopra nel progetto cartella - puoi per favore guidarmi attraverso il prossimo passo per entrare a vivere? -
Hamendra Sunthwal

7

nel tuo terminale

npm run build

e si ospita la cartella dist. per di più vedi questo video


Ciò presuppone erroneamente che esista uno script di build in package.json.
crash springfield

4
@crashspringfield Un presupposto accurato da fare quando l'OP chiede in particolare un'applicazione Vue creata convue-cli
Dan Fletcher il

4

Se si esegue in problemi con il vostro percorso, forse avete bisogno di cambiare il assetPublicPathnel config/index.jsfile alla sottodirectory:

http://vuejs-templates.github.io/webpack/backend.html


Assicurati di cambiare build: {..... assetsPublicPath: './', che i punti prima della barra sono importanti. Ma c'è anche un assetsPublinPath nell'oggetto dev in quel file, quindi assicurati di cambiare quello corretto.
Shane G,

Versione: webpack 3.12.0 Tempo: 16548ms Dimensione asset Pezzi Chunk Nomi build.js 2,15 MB 0 [emesso] [grande] main build.js.map 9,74 MB 0 [emesso] main - Viene visualizzato dopo aver eseguito il cmd sopra nel progetto cartella - puoi per favore guidarmi attraverso il prossimo passo per entrare a vivere? -
Hamendra Sunthwal

2

I comandi per quali codici specifici eseguire sono elencati all'interno del file package.json sotto gli script. Ecco un mio esempio:

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

Se stai cercando di eseguire il tuo sito localmente, puoi provarlo con

npm serve

Se stai cercando di preparare il tuo sito per la produzione, dovresti utilizzarlo

npm build

Questo comando genererà una cartella dist con una versione compressa del tuo sito.


1

Per distribuire l'applicazione in ambiente di produzione aggiungere

"build": "vue-cli-service build --mode prod"

nei tuoi script nel file package.json.

Apri main.js e aggiungi

Vue.config.productionTip = false;

subito dopo le tue importazioni. Quindi apri il tuo cli nella cartella del progetto ed esegui questo comando

npm run build

Questo renderà una cartella dist nella directory del tuo progetto che potresti caricare quella cartella dist nel tuo host e il tuo sito web sarà attivo


0

Questo comando serve per avviare il server di sviluppo:

npm run dev

Dove si trova questo comando per la build di produzione:

npm run build

Assicurati di guardare e andare all'interno della cartella generata chiamata 'dist'.
Quindi inizia a inviare tutti quei file sul tuo server.


0

Un modo per farlo senza usare VUE-CLI è raggruppare tutti i file di script in un unico file js fat e quindi fare riferimento a quel grande file javascript grasso nel file modello principale.

Preferisco usare webpack come bundler e creare un webpack.conig.js nella directory principale del progetto. Tutte le configurazioni come punto di ingresso, file di output, caricatori, ecc. Sono tutte memorizzate in quel file di configurazione. Successivamente, aggiungo uno script nel file package.json che utilizza il file webpack.config.js per le configurazioni del webpack e inizio a guardare i file e creo un file in bundle Js nella posizione menzionata nel file webpack.config.js.


0

Penso che tu possa usare vue-cli

Se si utilizza l'interfaccia della riga di comando di Vue insieme a un framework di back-end che gestisce le risorse statiche come parte della sua distribuzione, è sufficiente assicurarsi che l'interfaccia della riga di comando di Vue generi i file creati nella posizione corretta, quindi seguire le istruzioni di distribuzione del framework di back-end .

Se stai sviluppando la tua app front-end separatamente dal tuo back-end, ovvero il tuo back-end espone un'API con cui il tuo front-end può parlare, allora il tuo front-end è essenzialmente un'app puramente statica. È possibile distribuire il contenuto creato nella directory dist su qualsiasi file server statico, ma assicurarsi di impostare la baseUrl corretta


hai ragione, ma come mostra la risposta accettata, la domanda era su quale comando eseguire
JR Utily,

0
  1. npm run build - questo permetterà di ridurre al minimo e minimizzare i codici

  2. salva index.html e la cartella dist nella directory principale del tuo sito web.

  3. servizio di hosting gratuito che potrebbe interessarti - Firebase hosting.


0

se hai usato vue-cli e webpack quando hai creato il tuo progetto.

puoi usare solo

npm esegue il comando build nella riga di comando e creerà la cartella dist nel progetto. Basta caricare il contenuto di questa cartella sul tuo ftp e il gioco è fatto.


basta caricare la cartella dist sul tuo ftp e il gioco è fatto? e come accedere all'app Vue sul server?
Hamendra Sunthwal,

0

QUESTO È PER IL DEPLOYING A UNA CARTELLA PERSONALIZZATA (se volevi che la tua app non fosse root, ad esempio URL / myApp /) - Ho cercato a lungo di trovare questa risposta ... spero che aiuti qualcuno.

Ottieni l' interfaccia della riga di comando VUE su https://cli.vuejs.org/guide/ e utilizza la build dell'interfaccia utente per semplificare. Quindi, nella configurazione, puoi cambiare il percorso pubblico in / qualunque / e collegarti al suo URL / qualunque.

Guarda questo video che spiega come creare un'app Vue utilizzando l'interfaccia della riga di comando se hai bisogno di ulteriore aiuto: https://www.youtube.com/watch?v=Wy9q22isx3U


0

La documentazione di Vue fornisce molte informazioni su come distribuire a diversi provider host.

npm run build

Puoi trovarlo dal file json del pacchetto. sezione script. Fornisce script per test, sviluppo e costruzione per la produzione.

Puoi utilizzare servizi come netlify che raggrupperanno il tuo progetto collegando il tuo repository github del progetto dal loro sito. Fornisce inoltre informazioni su come distribuire su altri siti come heroku.

Puoi trovare maggiori dettagli su questo qui


0

Prima installa Vue Cli a livello globale

npm install -g @vue/cli

Per creare un nuovo progetto, eseguire:

vue create project-name

corri vue

npm run serve 

Vue CLI> = 3 utilizza lo stesso binario vue, quindi sovrascrive Vue CLI 2 (vue-cli). Se hai ancora bisogno della funzionalità legue vue init, puoi installare un bridge globale:

Vue Init a livello globale

npm install -g @vue/cli-init

vue init ora funziona esattamente come vue-cli@2.x

Vue Create App

vue init webpack my-project

Esegui il server per sviluppatori

npm run dev

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.