title: webpack jquery plugin loading its own instance of jquery
body: <p>I've been trying to load a jquery plugin through webpack.
  This plugin is packaged as a npm module and in its dependencies includes only jquery.
  I think webpack loads that instance of jquery instead of using the one I provide globally with the ProvidePlugin.
  I tried all the solutions provided in another stackoverflow post (<a href="https://stackoverflow.com/questions/28969861/managing-jquery-plugin-dependency-in-webpack">Managing jQuery plugin dependency in webpack</a>) but they didn't make the trick; the result is always the same: "terminal() is not a function".
  If I manually modify the package in the node_modules folder deleting the jquery dependency in the package.json and the downloaded dependency in the node_modules plugin folder webpack successfully binds the plugin with the global instance of jquery.
  I know, I could simply make a fork of that package and use a private npm repository but I would like to use the official package.</p>
  
  <p>That's my webpack configuration:</p>
  
  <p><div class="snippet" data-lang="js" data-hide="false" data-console="true" data-babel="false">
  <div class="snippet-code">
  <pre class="snippet-code-js lang-js prettyprint-override"><code>var webpack = require('webpack');
  var HtmlWebpackPlugin = require('html-webpack-plugin');
  var CleanWebpackPlugin = require('clean-webpack-plugin');
  var CopyWebpackPlugin = require('copy-webpack-plugin');
  var ExtractTextPlugin = require('extract-text-webpack-plugin');
  var moment = require('moment');
  var path = require('path');
  var environment = process.env.APP_ENVIRONMENT || 'dev';
  
  module.exports = {
  
    entry: {
      'app': './src/main.ts',
      'polyfills': './src/polyfills.ts',
      'vendor': './src/vendor.ts'
    },
    /*devtool: 'source-map',*/
    output: {
      path: './dist',
      filename: '[name].browser.' + moment().format('DDMMYYYYHHmm') + '.js'
    },
    module: {
      loaders: [
        { test: /\.component.ts$/, loader: 'ts!angular2-template' },
        { test: /\.ts$/, exclude: /\.component.ts$/, loader: 'ts' },
        { test: /\.html$/, loader: 'raw-loader' },
        { test: /\.css$/, include: path.resolve('src/app'), loader: 'raw-loader' },
        {
          test: /\.css$/, exclude: path.resolve('src/app'), loader: ExtractTextPlugin.extract('style', 'css', {
            fallbackLoader: "style-loader",
            loader: "css-loader"
          })
        },
        { test: /\.(png|jpe?g|gif|ico)$/, loader: 'file?name=fonts/[name].[ext]' },
        { test: /\.woff(\?v=\d+\.\d+\.\d+)?$/, loader: "url?limit=10000&amp;mimetype=application/font-woff&amp;name=fonts/[name].[ext]" },
        { test: /\.woff2(\?v=\d+\.\d+\.\d+)?$/, loader: "url?limit=10000&amp;mimetype=application/font-woff&amp;name=fonts/[name].[ext]" },
        { test: /\.ttf(\?v=\d+\.\d+\.\d+)?$/, loader: "url?limit=10000&amp;mimetype=application/octet-stream&amp;name=fonts/[name].[ext]" },
        { test: /\.eot(\?v=\d+\.\d+\.\d+)?$/, loader: "file?name=fonts/[name].[ext]" },
        { test: /\.svg(\?v=\d+\.\d+\.\d+)?$/, loader: "url?limit=10000&amp;mimetype=image/svg+xml&amp;name=fonts/[name].[ext]" },
      ]
    },
    resolve: {
      extensions: ['', '.js', '.ts', '.html', '.css']
    },
    plugins: [
      new webpack.optimize.CommonsChunkPlugin({
        name: ['vendor', 'polyfills']
      }),
      new HtmlWebpackPlugin({
        template: './src/index.html'
      }),
      new webpack.DefinePlugin({
        app: {
          environment: JSON.stringify(environment),
          config: JSON.stringify(require('./profile/' + environment + ".profile.js"))
        }
      }),
      new CleanWebpackPlugin(
        ['dist']
      ),
      new CopyWebpackPlugin([
        { from: './src/images', to: 'images' }
      ]),
      new ExtractTextPlugin('[name].browser.css'),
      new webpack.optimize.UglifyJsPlugin({ minimize: true }),
      new webpack.ProvidePlugin({
        $: "jquery",
        jQuery: "jquery",
        "window.jQuery": "jquery"
      })
    ]
  };</code></pre>
  </div>
  </div>
  </p>
  
  <p>Here the jquery.terminal package.json:</p>
  
  <p><div class="snippet" data-lang="js" data-hide="false" data-console="true" data-babel="false">
  <div class="snippet-code">
  <pre class="snippet-code-js lang-js prettyprint-override"><code>{
    "_args": [
      [
        {
          "raw": "jquery.terminal@0.11.11",
          "scope": null,
          "escapedName": "jquery.terminal",
          "name": "jquery.terminal",
          "rawSpec": "0.11.11",
          "spec": "0.11.11",
          "type": "version"
        },
        "/home/giovanni/Projects/Private/site"
      ]
    ],
    "_from": "jquery.terminal@0.11.11",
    "_id": "jquery.terminal@0.11.11",
    "_inCache": true,
    "_installable": true,
    "_location": "/jquery.terminal",
    "_nodeVersion": "4.2.6",
    "_npmOperationalInternal": {
      "host": "packages-16-east.internal.npmjs.com",
      "tmp": "tmp/jquery.terminal-0.11.11.tgz_1475868856610_0.3736777463927865"
    },
    "_npmUser": {
      "name": "jcubic",
      "email": "jcubic@onet.pl"
    },
    "_npmVersion": "3.5.2",
    "_phantomChildren": {},
    "_requested": {
      "raw": "jquery.terminal@0.11.11",
      "scope": null,
      "escapedName": "jquery.terminal",
      "name": "jquery.terminal",
      "rawSpec": "0.11.11",
      "spec": "0.11.11",
      "type": "version"
    },
    "_requiredBy": [
      "#USER",
      "/"
    ],
    "_resolved": "https://registry.npmjs.org/jquery.terminal/-/jquery.terminal-0.11.11.tgz",
    "_shasum": "eaeed2f8f305ac0477d71ef492e7d98d6064d812",
    "_shrinkwrap": null,
    "_spec": "jquery.terminal@0.11.11",
    "_where": "/home/giovanni/Projects/Private/site",
    "author": {
      "name": "Jakub Jankiewicz",
      "email": "jcubic@onet.pl",
      "url": "http://jakub.jankiewi.cz"
    },
    "bugs": {
      "url": "https://github.com/jcubic/jquery.terminal/issues"
    },
    "dependencies": {
      "jquery": "^2.1.4"
    },
    "description": "jQuery Terminal Emulator is a plugin for creating command line interpreters in your applications.",
    "devDependencies": {
      "istanbul": "^0.4.3",
      "jasmine": "^2.4.1",
      "jasmine-node": "^1.14.5",
      "jsdom": "^3.1.2"
    },
    "directories": {},
    "dist": {
      "shasum": "eaeed2f8f305ac0477d71ef492e7d98d6064d812",
      "tarball": "https://registry.npmjs.org/jquery.terminal/-/jquery.terminal-0.11.11.tgz"
    },
    "gitHead": "0f2e55a6501d96aa17d42e4fcc071fab906309d8",
    "homepage": "http://terminal.jcubic.pl",
    "keywords": [
      "terminal",
      "emulator",
      "prompt",
      "console",
      "keyboard",
      "type",
      "rpc",
      "input",
      "ui"
    ],
    "license": "MIT",
    "main": "js/jquery.terminal-0.11.11.js",
    "maintainers": [
      {
        "name": "jcubic",
        "email": "jcubic@onet.pl"
      }
    ],
    "name": "jquery.terminal",
    "optionalDependencies": {},
    "readme": "ERROR: No README data found!",
    "repository": {
      "type": "git",
      "url": "git+https://github.com/jcubic/jquery.terminal.git"
    },
    "scripts": {},
    "version": "0.11.11"
  }</code></pre>
  </div>
  </div>
  </p>