【问题标题】:VueJS Webpack where to add pluginsVueJS Webpack 在哪里添加插件
【发布时间】:2018-03-22 08:25:12
【问题描述】:

我想添加 webpack provided Plugins 以在全球范围内使用 JQuery。 有些文章说

你需要把它放在 webpack.config.js 的 plugins 下:[]

但是当我查看我的webpack.config.js 时,没有这样的plugins 对象。 然后我在module数组下手动创建plugins对象。

之后,当我尝试使用 npm run dev 运行项目时

它没有运行。 我想把这个插件添加到webpack.config.js

new webpack.ProvidePlugin({
  $: 'jquery',
  jQuery: 'jquery'
})

我该怎么做? 这是我的 webpack.config.js 文件

var path = require('path')
var webpack = require('webpack')

module.exports = {
  entry: './src/main.js',
  output: {
    path: path.resolve(__dirname, './dist'),
    publicPath: '/dist/',
    filename: 'build.js'
  },
  module: {
    rules: [
      {
        test: /\.css$/,
        use: [
          'vue-style-loader',
          'css-loader'
        ],
      },      {
        test: /\.vue$/,
        loader: 'vue-loader',
        options: {
          loaders: {
          }
          // other vue-loader options go here
        }
      },
      {
        test: /\.js$/,
        loader: 'babel-loader',
        exclude: /node_modules/
      },
      {
        test: /\.(png|jpg|gif|svg)$/,
        loader: 'file-loader',
        options: {
          name: '[name].[ext]?[hash]'
        }
      }
    ]
  },
  plugins[
    new webpack.ProvidePlugin({
      $: 'jquery',
      jQuery: 'jquery'
    }),
    new webpack.ProvidePlugin({
  Vue: ['vue/dist/vue.esm.js', 'default']
})


],
  resolve: {
    alias: {
      'vue$': 'vue/dist/vue.esm.js'
    },
    extensions: ['*', '.js', '.vue', '.json']
  },
  devServer: {
    historyApiFallback: true,
    noInfo: true,
    overlay: true
  },
  performance: {
    hints: false
  },
  devtool: '#eval-source-map'
}

if (process.env.NODE_ENV === 'production') {
  module.exports.devtool = '#source-map'
  // http://vue-loader.vuejs.org/en/workflow/production.html
  module.exports.plugins = (module.exports.plugins || []).concat([
    new webpack.DefinePlugin({
      'process.env': {
        NODE_ENV: '"production"'
      }
    }),
    new webpack.optimize.UglifyJsPlugin({
      sourceMap: true,
      compress: {
        warnings: false
      }
    }),
    new webpack.LoaderOptionsPlugin({
      minimize: true
    })
  ])
}

【问题讨论】:

    标签: javascript webpack vue.js vuejs2


    【解决方案1】:

    如果您快速查看插件 here 的 webpack 文档,您会看到 plugins 对象所属的位置。

    好消息是:你的 webpack 配置看起来已经正确了——你把 plugins 数组作为配置的直接子元素,放在 module 之后,而不是放在里面。您只在plugins 后面漏掉了一个: 冒号,这很可能是一个错字。

    所以我看不出什么不应该起作用的原因。

    【讨论】:

    • =) 这可能是原因。但即使我纠正了那件事,即使在那之后它也不起作用。它给了我错误 Module not found: Error: Can't resolve 'jquery' I import JQuery as a CDN in my index.html。我需要将 JQuery 安装为 npm
    【解决方案2】:

    build/webpack.dev.conf.jsbuild/webpack.prod.conf.js 中试试这个:

    plugins: [
    
      // ...
    
      new webpack.ProvidePlugin({
        $: 'jquery',
        jquery: 'jquery',
        'window.jQuery': 'jquery',
        jQuery: 'jquery'
      })
    ]
    

    jQuery 对您的所有模块全局可用:

    【讨论】:

    • 构建文件夹在哪里我无法在我的项目中找到它。我使用 webpack-simple。是这个原因吗?我有一个 dist 文件夹。但是没有这样的 webpack.prod.conf.js 文件。
    • 在 webpack.config.js 文件夹中试试
    • 这是我的问题,当我手动创建插件并尝试运行项目时,没有称为插件的地方无法运行。查看我的 webpack.config.js 文件
    猜你喜欢
    • 1970-01-01
    • 2014-02-01
    • 2017-01-30
    • 2015-05-26
    • 2018-03-19
    • 2016-06-09
    • 2019-02-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多