使用Rails将插件添加到Webpack

时间:2018-07-20 17:12:01

标签: javascript ruby-on-rails webpack

我将Webpacker gem与Rails 5.2一起使用,并希望通过设置NODE_ENV全局变量来访问前端环境。
这是我的config / webpack / environment.js文件:

const { environment } = require('@rails/webpacker')

// Bootstrap 3 has a dependency over jQuery:
const webpack = require('webpack')

environment.plugins.prepend('Provide',
  new webpack.ProvidePlugin({
    $: 'jquery',
    jQuery: 'jquery'
  })
)

module.exports = environment

我看到我需要将以下插件添加到webpack才能访问前端环境:

  new webpack.DefinePlugin({
    'NODE_ENV': JSON.stringify(process.env.NODE_ENV)
  })

但是我不知道如何添加它...我尝试了很多选项,包括下面的行,而且总是行不通,或者破坏了jQuery(即Uncaught ReferenceError:未定义jQuery):< / p>

environment.plugins.prepend('Provide',
  new webpack.DefinePlugin({
    'NODE_ENV': JSON.stringify(process.env.NODE_ENV)
  })
)

任何帮助都将受到欢迎,我已经为此努力了数小时。 非常感谢!!


编辑

我找到了解决方案...事实证明,您只需要在前面/后面添加一个新插件,并为其提供与其他插件不同的名称即可。现在我的config / webpack / environment.js看起来像这样:

const { environment } = require('@rails/webpacker')

// Bootstrap 3 has a dependency over jQuery:
const webpack = require('webpack')

environment.plugins.prepend('Provide',
  new webpack.ProvidePlugin({
    $: 'jquery',
    jQuery: 'jquery'
  })
)

environment.plugins.prepend('env',
  new webpack.DefinePlugin({
    'NODE_ENV': JSON.stringify(process.env.NODE_ENV)
  })
)


module.exports = environment

我现在可以从每个js / jsx文件访问NODE_ENV !!

0 个答案:

没有答案