在Rails中使用Webpack添加插件

8

我正在使用Rails 5.2中的Webpacker gem,并希望通过设置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(即未捕获的ReferenceError:jQuery未定义):

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

1个回答

2
原来你只需要在前面或后面添加一个新的插件,并为其命名与其他插件不同即可。现在我的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了!


本答案发布为编辑,是对问题Adding plugin to Webpack with Rails中由OPoruhtra提出的CC BY-SA 4.0的回答。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接