1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
|
require "webpacker/configuration"
say "Copying elm loader to config/webpack/loaders"
copy_file "#{__dir__}/loaders/elm.js", Rails.root.join("config/webpack/loaders/elm.js").to_s
say "Adding elm loader to config/webpack/environment.js"
insert_into_file Rails.root.join("config/webpack/environment.js").to_s,
"const elm = require('./loaders/elm')\n",
after: /require\(('|")@rails\/webpacker\1\);?\n/
insert_into_file Rails.root.join("config/webpack/environment.js").to_s,
"environment.loaders.prepend('elm', elm)\n",
before: "module.exports"
say "Copying Elm example entry file to #{Webpacker.config.source_entry_path}"
copy_file "#{__dir__}/examples/elm/hello_elm.js",
"#{Webpacker.config.source_entry_path}/hello_elm.js"
say "Copying Elm app file to #{Webpacker.config.source_path}"
copy_file "#{__dir__}/examples/elm/Main.elm",
"#{Webpacker.config.source_path}/Main.elm"
say "Installing all Elm dependencies"
run "yarnpkg add elm elm-webpack-loader"
run "yarnpkg add --dev elm-hot-webpack-loader"
run "yarnpkg run elm init"
run "yarnpkg run elm make #{Webpacker.config.source_path}/Main.elm"
say "Updating webpack paths to include .elm file extension"
insert_into_file Webpacker.config.config_path, "- .elm\n".indent(4), after: /\s+extensions:\n/
say "Updating Elm source location"
gsub_file "elm.json", /\"src\"\n/,
%("#{Webpacker.config.source_path.relative_path_from(Rails.root)}"\n)
say "Updating .gitignore to include elm-stuff folder"
insert_into_file ".gitignore", "/elm-stuff\n", before: "/node_modules\n"
say "Webpacker now supports Elm 🎉", :green
|