включить стороннюю библиотеку в webpack

Я пытаюсь включить плагин (freezeframe плагин) в мое приложение с помощью webpack, но я не могу понять, как это сделать. Я обслуживаю этот файл локально из своего приложения, а не из cdn или npm/bower. Я искал повсюду, чтобы попытаться разобраться в этом, но не смог приблизиться.

мой файл webpack выглядит так:

const webpack = require('webpack');
const conf = require('./gulp.conf');
const path = require('path');

const HtmlWebpackPlugin = require('html-webpack-plugin');
const autoprefixer = require('autoprefixer');

module.exports = {
  module: {
    preLoaders: [
      {
        test: /.js$/,
        exclude: /node_modules/,
        loader: 'eslint'
      }
    ],

    loaders: [
      {
        test: /.json$/,
        loaders: [
          'json'
        ]
      },
      {
        test: /.gif$/,
        loader: 'url-loader',
        query: { mimetype: 'image/gif' }
      },
      {
        test: /.svg$/,
        loader: 'svg-loader?pngScale=2'
      },
      {
        test: /.(eot|woff|woff2|ttf|svg|png|jpg)$/,
        loader: 'url-loader?limit=30000&name=[name]-[hash].[ext]'
      },
      {
        test: /.(css|scss)$/,
        loaders: [
          'style',
          'css',
          'sass',
          'postcss'
        ]
      },
      {
        test: /.js$/,
        exclude: /node_modules/,
        loaders: [
          'babel',
        ]
      },
      {
        test: /.vue$/,
        loaders: [
          'vue'
        ]
      }
    ]
  },
  vue: {
    postcss: [
      require('autoprefixer')({
        browsers: [
          'Android >= 2.3',
          'BlackBerry >= 7',
          'Chrome >= 9',
          'Firefox >= 4',
          'Explorer >= 9',
          'iOS >= 5',
          'Opera >= 11',
          'Safari >= 5',
          'OperaMobile >= 11',
          'OperaMini >= 6',
          'ChromeAndroid >= 9',
          'FirefoxAndroid >= 4',
          'ExplorerMobile >= 9'
        ]
      }),
    ]
  },
  plugins: [
    new webpack.optimize.OccurrenceOrderPlugin(),
    new webpack.NoErrorsPlugin(),
    new HtmlWebpackPlugin({
      template: conf.path.src('index.html')
    }),
    new webpack.ProvidePlugin({
      $: 'jquery',
      jquery: 'jquery',
      'window.jQuery': 'jquery',
      jQuery: 'jquery',
      slick: 'slick-carousel'
    })
  ],
  resolve: {
    extensions: ['', '.js', '.css', '.scss'],
    alias: {
      'jQuery': path.join(__dirname, 'node_modules', 'jquery', 'dist', 'jquery')
    }
  },
  postcss: () => [autoprefixer({
    browsers: [
      'Android >= 2.3',
      'BlackBerry >= 7',
      'Chrome >= 9',
      'Firefox >= 4',
      'Explorer >= 9',
      'iOS >= 5',
      'Opera >= 11',
      'Safari >= 5',
      'OperaMobile >= 11',
      'OperaMini >= 6',
      'ChromeAndroid >= 9',
      'FirefoxAndroid >= 4',
      'ExplorerMobile >= 9'
    ]
  })],
  debug: true,
  devtool: 'source-map',
  output: {
    path: path.join(process.cwd(), conf.paths.tmp),
    filename: 'index.js'
  },
  entry: `./${conf.path.src('index')}`
};

Я думал, что я пишу require('./assets/freezeframe/freezeframe.js'); в моем компоненте vue, но затем он жалуется на jquery, не определен. У меня есть jquery установлен через npm, и я уже использую другой плагин, который использует jquery следующим образом:

import 'slick-carousel';
  const imagesLoaded = require('imagesloaded');

  export default {
    name: 'Slider',
    props: ['images', 'component'],
    mounted () {
      var that = this;
      $(function() {
        imagesLoaded('.js-component-slider',() => {
          $(that.$el).slick({
            adaptiveHeight: true,
            infinite: false
          });
        });
      });
    }
  }

Я теперь не знаю, что делать. Я не хочу просто включать другой jquery и файл плагина в верхней/нижней части моего индекса.html, потому что я хочу, чтобы он был в комплекте.

единственная другая болезненная вещь-этот плагин не в npm, и я не использую bower.

обновление:

Я видел этот вопрос add-js-file но я попытался сделать это с плагином, но все равно получаю ошибку, что он не включен, когда мне требуется ('nameoffile')

1 ответов


поэтому после поиска в течение всего дня я узнал, что мне пришлось проколоть плагин, поскольку он не использует модуль.экспорт. плагин ШИМ что означало, что я мог бы написать это: Вам также нужно будет установить экспорт-погрузчик

const freezeframe = require("exports?freezeframe!./assets/freezeframe/freezeframe.js");

в моем файле vue. Затем я смог использовать его, как и раньше, при добавлении в индекс.HTML-код