Comment direct vue-cli de mettre construite projet des fichiers dans des répertoires différents?
Peut-être 8-9 mois, j'ai créé un Webpacked Vue.js projet avec vue-cli et a été en mesure de modifier /build/webpack.dev.conf.js
de le faire mettre le "compilé" index.html
et JavaScript /CSS fichiers dans les dossiers de droit dans ma Gourde app quand je lance npm run build
.
Je suis maintenant quelqu'un d'autre comment créer un Vue.js /Flacon app et je vois que la voie de vue-cli œuvres semble avoir changé, de sorte que je n'ai plus accès à la /build/
dossier.
J'ai lu les docs et ils semblaient dire que maintenant abstraction de la Webpack config ("Depuis @vue/cli-service abstraction de la webpack config..."), mais que si je veux voir Webpack est les options de configuration, je peux faire vue inspect > output.js
. Je l'ai fait et ne pas voir les entrées de là que j'ai changé quand j'ai fait cela il y a huit mois:
/build/webpack.prod.conf.js
:
new HtmlWebpackPlugin({
filename: process.env.NODE_ENV === 'testing'
- ? 'index.html'
+ ? 'app.html'
: config.build.index,
- template: 'index.html',
+ template: 'app.html',
/build/webpack.dev.conf.js
:
new HtmlWebpackPlugin({
- filename: 'index.html',
- template: 'index.html',
+ filename: 'app.html',
+ template: 'app.html',
/config/index.js
:
module.exports = {
build: {
env: require('./prod.env'),
- index: path.resolve(__dirname, '../dist/index.html'),
- assetsRoot: path.resolve(__dirname, '../dist'),
- assetsSubDirectory: 'static',
- assetsPublicPath: '/',
+ index: path.resolve(__dirname, '../../server/templates/app.html'),
+ assetsRoot: path.resolve(__dirname, '../../server/static/app'),
+ assetsSubDirectory: '',
+ assetsPublicPath: '/static/app',
Il ressemble à la vue build
commande de ligne de commande peuvent accepter un argument qui vous permet de spécifier le répertoire de sortie, mais j'ai besoin de spécifier deux répertoires différents: un pour le fichier HTML (qui doit vivre dans la Fiole de /templates/
dossier), et un autre pour le JavaScript /CSS (ce qui devrait aller dans un Flacon de /static/
dossier).
- Quels sont exactement ce que vous cherchez dans
output.js
fichier? Je viens de l'exécution de cette commande et il n'y aentry
etoutput
propriétés de consulter les répertoires que vous voulez modifier. Avez-vous essayé de les remplacer dansvue.config.js
que dit la documentation? - J'ai mis à jour ma question inclure les fichiers et les lignes j'ai changé la dernière fois. Comme je le mentionne dans la question (ajouté peut-être 10 à 20 minutes il y a donc peut-être que vous ne le voyez pas), je veux en sortie le fichier HTML dans un répertoire et le JavaScript / CSS dans un autre répertoire.
Vous devez vous connecter pour publier un commentaire.
Par la relative vuejs guide
Et les vuejs config référence
Voici un exemple vue.config.js que je viens de vérifié à l'aide de
vue-cli-service
@ 3.0.0-rc.2J'ai du mal avec ce hier moi-même, mais a réussi à craquer en fin de compte en utilisant une partie de oniondomes réponse et certains de la nouvelle documentation:
La principale différence est la chainwebpack l'article - ce qui vous a permis de vous surcharger n'importe quel configs pour les plugins référencés. L'autre réponse est l'ajout d'une autre html-webpack-plugin qui, je crois, qui est à l'origine de jeter une erreur.
J'ai d'abord eu les configs comme des objets, mais cela a causé des problèmes lorsque vous essayez d'exécuter le dev mode. Par de les changer de fonctions, vous pouvez spécifier que cela se produit uniquement lors de la construction dans le mode de production.
À tout moment, vous pouvez voir le webpack config générés avec ces remplacements en exécutant la commande suivante à partir de la console
La question que j'ai besoin pour résoudre était spécifique à une C# MVC projet qui ont besoin pour la sortie d'un cshtml page. Je vais laisser ma solution ici pour quelqu'un qui en a besoin.
J'ai juste eu à le faire pour un nouveau projet à l'aide de la dernière Vue-CLI, et c'était assez simple: j'ai juste besoin d'avoir un fichier appelé
vue.config.js
au premier niveau de mon projet Vue et j'ai besoin le code suivant:Noter que Vue-CLI supprimer le contenu de ce que les dossiers que vous spécifiez à utiliser pour sa sortie. Pour contourner ce problème, j'ai créé le "SPA" dossiers dans mes
templates/
etstatic/
répertoires.Également de noter que la
assetsDir
est spécifié par rapport à laoutputDir
.Par défaut, les fichiers de production sont intégrées dans le
/dist/
sous-dossier de votre projet Vue et ils sont censés être déployés dans le dossier racine de votre serveur ("/"). Par conséquent, vous aurez à les copier à la racine, afin d'accéder à la projet à partir de votre navigateur. Puisque ce n'est pas toujours pratique, vous pouvez construire pour un déploiement dans un sous-dossier de racine par exemple/subdir/vue_project/dist/
.Dans ce cas, suivez les conseils à https://cli.vuejs.org/config/#publicpath pour rediriger vue-cli pour créer les fichiers de projet pour cette sous-dossier. Pour ce faire, veuillez exécuter
vue ui
, puis ouvrez la cli 3.3+ Configuration de l'INTERFACE utilisateur de la fenêtre à localhost:8000 puis modifier la valeur par défaut depublicPath
à/subdir/vue_project/dist/
et Enregistrer les modifications.Si vous souhaitez retourner au développement (servir), ne pas oublier de mettre
publicPath
retour à/
avant l'exécution de servir et d'accéder à localhost:8080.Pour être honnête, je ne vois pas quel est le problème que vous rencontrez depuis que vous avez vu les docs et pointent directement vers la droite de celui-ci. Je viens de créer un nouveau vue.js projet à l'aide de
vue-cli
3.0, créévue.config.js
fichier dans le répertoire racine du projet et à la recherche àoutput.js
(créé automatiquement avecvue inspect > output.js
) j'ai écrit ce qui suit:Maintenant quand je lance
build
script mes fichiers va à laanother-dir
dossier et le code html est pris detest.html
. Je suppose que suivant cette méthode, vous pouvez reconfigurer votre projet en fonction de votre besoin.Espère que je ne vous comprends question de droit et de ne pas gaspiller de temps pour tout le monde.
EDIT: ce qui semble être de placer les fichiers que vous voulez, mais pour une raison quelconque HtmlWebpackPlugin arrive à créer
dist/
dossier et de sortie .html fichier deux fois dans les deux/dist
et/templates
. Pour celui-ci, je ne pouvais pas trouver un solution pour le moment./templates/
dossier et mon JavaScript / CSS aller à la/static/
dossier. À partir de ce que je peux dire, les options de configuration ne vous permet pas de spécifier que les fichiers doivent être scindées en sortie des dossiers comme ça.'../../your-folder'
vue-cli
3.0 est encore en version bêta et il pourrait arriver à ne pas être aussi stable que vous le souhaitez. Vous pouvez toujours utiliser la version précédente si vous le souhaitez.output
partie du code de travail (tous les fichiers sont mis dans ma Gourde de l'application "statique" dossier) mais leHtmlWebpackPlugin
partie est de lancer une erreur pour moi:TypeError: Cannot read property 'source' of undefined