使用Rails webpacker rails-erb-loader导入Gem的javascript文件夹

时间:2019-12-15 16:59:42

标签: javascript ruby-on-rails ruby webpack

我正在尝试使用Rails 6 webpacker从gem的文件夹中导入javascript。我看到每次导入仅用1个文件完成此操作。是否可以使用* .js扩展名来获取gem的所有文件?

javascript / packs / application.js.erb

import "<%= File.read(File.join(Gem.loaded_specs['active_storage_drag_and_drop'].full_gem_path, 'lib', 'assets', 'javascripts', 'active_storage_drag_and_drop/*.js')) %>";

错误

(erb):17:in `read': No such file or directory @ rb_sysopen -/home/user.../active_storage_drag_and_drop../assets/javascript/active_storage_drag_and_drop/index.js

1 个答案:

答案 0 :(得分:0)

此软件包可在NPM上使用:https://www.npmjs.com/package/active_storage_drag_and_drop

我会这样做:

yarn add active_storage_drag_and_drop

然后在您的Webpack js文件中:

import * as ActiveStorageDragAndDrop from "active_storage_drag_and_drop"
window.ActiveStorageDragAndDrop = ActiveStorageDragAndDrop // needed as of v1.0.3

https://github.com/rossta/rails6-webpacker-demo/commit/ce1e8eb991b681574bdb7ce0ef33ae4e34b61dfd#diff-c0a98e77a42efd669302853444d5c362

我已经在https://github.com/rossta/rails6-webpacker-demo/tree/example/active_storage_drag_and_drop的分支中创建了一个有效的演示

  

由于package's JS source makes assumptions about globals自v1.0.3起,因此在项目JS中分配了导入的var    在更新软件包之前是必需的。

对于基于Ruby的依赖项,您可能仍需要Gemfile中的gem。

通常,我不建议您尝试通过ERB中的gem路径查找Ruby gems提供的javascript依赖项。迁移到Webpack / Webpacker的优点之一是,您应该尽可能地利用NPM增强依赖关系。