Webpack bundles mes fichiers dans le mauvais ordre (CommonsChunkPlugin)

Ce que je veux, c'est mon bundle JavaScript fournisseur de fichiers dans un ordre spécifique via CommonsChunkPlugin de Webpack.

Je suis en utilisant le CommonsChunkPlugin pour Webpack. L'utilisation de la la documentation officielle est simple et facile. Il fonctionne comme prévu, mais je crois que le plugin est le regroupement de mes fichiers dans l'ordre alphabétique (peut être à tort). Il n'y a pas d'options pour le plugin pour spécifier l'ordre où ils doivent être regroupés.

Remarque: Pour ceux qui ne sont pas familiers avec Bootstrap 4, il est actuellement
nécessite une bibliothèque JavaScript dépendance appelé Attache.
L'attache doit être chargé avant de Bootstrap.

webpack.config.js

module.exports = {
  entry: {
    app: './app.jsx',
    vendor: ['jquery', 'tether', 'bootstrap', 'wowjs'],
  },

  output: {
    path: __dirname + '/dist',
    filename: 'bundle.js',
  },

  plugins: [
    new webpack.optimize.CommonsChunkPlugin({
        name: 'vendor',
        filename: 'vendor.bundle.js'
    }),

    new webpack.optimize.UglifyJsPlugin(),
  ],
};

Deux il se passe des choses ici:

  1. vendor.bundle.js contient bootstrap, jquery, attache,
    wowjs
  2. bundle.js contient le reste de ma demande

Groupement de commande:
correct: jquery, tether, bootstrap, wowjs
incorrect: bootstrap, jquery, tether, wowjs

Avis dans mon webpack.config.js j'ai commandé exactement comme ils le devraient, mais ils sont regroupés dans la incorrect commande. Ce n'est pas grave si je les réorganiser de façon aléatoire le résultat est le même.

Après je utiliser Webpack de construire ma demande, le vendor.bundle.js me montre un ordre incorrect.

Je sais qu'ils sont regroupés de manière incorrecte cause Chrome Dev. Outils me dire il y a des problèmes de dépendance. Quand j'ai vue le fichier par le biais de l'outil et de mon IDE, il est livré dans un ordre incorrect.


Mon autre approche a également abouti à la même question

J'ai aussi essayé import et require dans mon entrée de fichier (dans ce cas, app.jsx) sans l'utilisation de la CommonChunkPlugin et que les charges de mes bibliothèques JavaScript dans l'ordre alphabétique pour une raison quelconque.

webpack.config.js

module.exports = {
  entry: './app.jsx',

  output: {
    path: __dirname + '/dist',
    filename: 'bundle.js',
  },

  plugins: [
    new webpack.optimize.UglifyJsPlugin(),
  ],
};

app.jsx (entrée)

import './node_modules/jquery/dist/jquery.min';
import './node_modules/tether/dist/js/tether.min';
import './node_modules/bootstrap/dist/js/bootstrap.min';
import './node_modules/wowjs/dist/wow.min';

ou

require('./node_modules/jquery/dist/jquery.min');
require('./node_modules/tether/dist/js/tether.min');
require('./node_modules/bootstrap/dist/js/bootstrap.min');
require('./node_modules/wowjs/dist/wow.min');

Le résultat?
Bootstrap > jQuery > Attache > wowjs


Comment puis-je charger mon fournisseur de fichiers dans le bon ordre?

N'par ordre alphabétique-il de mal? C'est fait à dessein, de sorte que l'ordre n'a pas d'incidence sur le contenu. "cause Chrome Dev. Outils me dire il y a des problèmes de dépendance. "--- tous les détails sur qui?
Eh bien, il y a d'énormes problèmes si c'est fait dans l'ordre alphabétique. L'une étant que Bootstrap nécessite jQuery et Attache pour être chargé avant de lui-même sinon il ne peut pas fonctionner correctement.
L'ordonnance de placement dans le bundle n'est pas en aucune façon influer sur l'ordre où ils sont chargés dans le moment de l'exécution. Le problème que vous rencontrez soit causée par quelque chose d'autre.

OriginalL'auteur Ollie Cee | 2017-03-23