webpacker 5.4.4 → 6.0.0.rc.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (189) hide show
  1. checksums.yaml +4 -4
  2. data/.eslintrc.js +1 -1
  3. data/.github/workflows/jest.yml +7 -15
  4. data/.github/workflows/js-lint.yml +7 -15
  5. data/.github/workflows/rubocop.yml +1 -1
  6. data/.github/workflows/ruby.yml +18 -16
  7. data/.gitignore +2 -0
  8. data/.node-version +1 -1
  9. data/.rubocop.yml +5 -7
  10. data/CHANGELOG.md +30 -12
  11. data/CONTRIBUTING.md +20 -1
  12. data/Gemfile.lock +83 -83
  13. data/README.md +389 -179
  14. data/config/README.md +3 -0
  15. data/config/webpacker.yml +1 -0
  16. data/docs/deployment.md +9 -11
  17. data/docs/developing_webpacker.md +29 -0
  18. data/docs/troubleshooting.md +61 -25
  19. data/docs/v6_upgrade.md +113 -0
  20. data/gemfiles/Gemfile-rails.6.1.x +12 -0
  21. data/lib/install/{javascript/packs/application.js → application.js} +2 -5
  22. data/lib/install/bin/webpack +4 -7
  23. data/lib/install/bin/yarn +18 -0
  24. data/lib/install/config/webpack/base.js +3 -0
  25. data/lib/install/config/webpack/development.js +2 -2
  26. data/lib/install/config/webpack/production.js +2 -2
  27. data/lib/install/config/webpack/test.js +2 -2
  28. data/lib/install/config/webpacker.yml +21 -49
  29. data/lib/install/package.json +15 -0
  30. data/lib/install/template.rb +64 -29
  31. data/lib/tasks/webpacker/binstubs.rake +6 -4
  32. data/lib/tasks/webpacker/check_binstubs.rake +4 -4
  33. data/lib/tasks/webpacker/check_node.rake +3 -0
  34. data/lib/tasks/webpacker/check_yarn.rake +3 -0
  35. data/lib/tasks/webpacker/clobber.rake +1 -1
  36. data/lib/tasks/webpacker/compile.rake +4 -2
  37. data/lib/tasks/webpacker/info.rake +12 -10
  38. data/lib/tasks/webpacker/install.rake +6 -4
  39. data/lib/tasks/webpacker/verify_config.rake +14 -0
  40. data/lib/tasks/webpacker/verify_install.rake +1 -10
  41. data/lib/tasks/webpacker/yarn_install.rake +9 -7
  42. data/lib/tasks/webpacker.rake +2 -11
  43. data/lib/tasks/yarn.rake +38 -0
  44. data/lib/webpacker/commands.rb +21 -16
  45. data/lib/webpacker/compiler.rb +16 -9
  46. data/lib/webpacker/configuration.rb +8 -32
  47. data/lib/webpacker/dev_server.rb +6 -0
  48. data/lib/webpacker/dev_server_runner.rb +28 -4
  49. data/lib/webpacker/helper.rb +47 -81
  50. data/lib/webpacker/instance.rb +4 -0
  51. data/lib/webpacker/manifest.rb +2 -3
  52. data/lib/webpacker/railtie.rb +8 -2
  53. data/lib/webpacker/runner.rb +1 -1
  54. data/lib/webpacker/version.rb +1 -1
  55. data/lib/webpacker/webpack_runner.rb +29 -3
  56. data/lib/webpacker.rb +1 -1
  57. data/package/__tests__/config.js +5 -37
  58. data/package/__tests__/development.js +13 -21
  59. data/package/__tests__/env.js +16 -4
  60. data/package/__tests__/index.js +9 -0
  61. data/package/__tests__/production.js +6 -6
  62. data/package/__tests__/staging.js +7 -6
  63. data/package/__tests__/test.js +4 -5
  64. data/package/babel/preset.js +54 -0
  65. data/package/config.js +6 -14
  66. data/package/env.js +13 -4
  67. data/package/environments/__tests__/base.js +20 -52
  68. data/package/environments/base.js +68 -128
  69. data/package/environments/development.js +49 -47
  70. data/package/environments/production.js +66 -64
  71. data/package/environments/test.js +2 -2
  72. data/package/index.js +15 -8
  73. data/package/inliningCss.js +7 -0
  74. data/package/rules/babel.js +10 -8
  75. data/package/rules/coffee.js +6 -0
  76. data/package/rules/erb.js +15 -0
  77. data/package/rules/file.js +21 -19
  78. data/package/rules/index.js +16 -18
  79. data/package/rules/less.js +22 -0
  80. data/package/rules/raw.js +5 -0
  81. data/package/rules/sass.js +9 -10
  82. data/package/rules/stylus.js +26 -0
  83. data/package/utils/get_style_rule.js +28 -36
  84. data/package/utils/helpers.js +28 -35
  85. data/package.json +18 -38
  86. data/test/command_test.rb +76 -0
  87. data/test/compiler_test.rb +0 -12
  88. data/test/configuration_test.rb +4 -35
  89. data/test/dev_server_runner_test.rb +36 -6
  90. data/test/engine_rake_tasks_test.rb +39 -0
  91. data/test/helper_test.rb +79 -77
  92. data/test/manifest_test.rb +16 -0
  93. data/test/mounted_app/Rakefile +4 -0
  94. data/test/mounted_app/test/dummy/Rakefile +3 -0
  95. data/test/mounted_app/test/dummy/bin/rails +3 -0
  96. data/test/mounted_app/test/dummy/bin/rake +3 -0
  97. data/test/mounted_app/test/dummy/config/application.rb +10 -0
  98. data/test/mounted_app/test/dummy/config/environment.rb +3 -0
  99. data/test/mounted_app/test/dummy/config/webpacker.yml +75 -0
  100. data/test/mounted_app/test/dummy/config.ru +5 -0
  101. data/test/mounted_app/test/dummy/package.json +7 -0
  102. data/test/rake_tasks_test.rb +1 -10
  103. data/test/test_app/app/{javascript/packs → packs/entrypoints}/application.js +1 -1
  104. data/test/test_app/config/initializers/inspect_autoload_paths.rb +1 -0
  105. data/test/test_app/config/webpacker.yml +5 -31
  106. data/test/test_app/config/webpacker_other_location.yml +79 -0
  107. data/test/test_app/config/webpacker_public_root.yml +0 -1
  108. data/test/test_app/public/packs/manifest.json +36 -18
  109. data/test/test_app/some.config.js +0 -0
  110. data/test/webpack_runner_test.rb +9 -3
  111. data/test/webpacker_test.rb +21 -0
  112. data/webpacker.gemspec +2 -2
  113. data/yarn.lock +1277 -4620
  114. metadata +63 -92
  115. data/docs/assets.md +0 -119
  116. data/docs/cloud9.md +0 -310
  117. data/docs/css.md +0 -308
  118. data/docs/docker.md +0 -68
  119. data/docs/engines.md +0 -213
  120. data/docs/env.md +0 -63
  121. data/docs/es6.md +0 -72
  122. data/docs/folder-structure.md +0 -66
  123. data/docs/integrations.md +0 -220
  124. data/docs/misc.md +0 -23
  125. data/docs/props.md +0 -223
  126. data/docs/target.md +0 -22
  127. data/docs/testing.md +0 -136
  128. data/docs/typescript.md +0 -190
  129. data/docs/v4-upgrade.md +0 -142
  130. data/docs/webpack-dev-server.md +0 -92
  131. data/docs/webpack.md +0 -364
  132. data/docs/yarn.md +0 -23
  133. data/lib/install/angular.rb +0 -23
  134. data/lib/install/coffee.rb +0 -25
  135. data/lib/install/config/.browserslistrc +0 -1
  136. data/lib/install/config/babel.config.js +0 -82
  137. data/lib/install/config/postcss.config.js +0 -12
  138. data/lib/install/config/webpack/environment.js +0 -3
  139. data/lib/install/elm.rb +0 -39
  140. data/lib/install/erb.rb +0 -25
  141. data/lib/install/examples/angular/hello_angular/app/app.component.ts +0 -9
  142. data/lib/install/examples/angular/hello_angular/app/app.module.ts +0 -16
  143. data/lib/install/examples/angular/hello_angular/index.ts +0 -8
  144. data/lib/install/examples/angular/hello_angular/polyfills.ts +0 -73
  145. data/lib/install/examples/angular/hello_angular.js +0 -7
  146. data/lib/install/examples/coffee/hello_coffee.coffee +0 -4
  147. data/lib/install/examples/elm/Main.elm +0 -55
  148. data/lib/install/examples/elm/hello_elm.js +0 -16
  149. data/lib/install/examples/erb/hello_erb.js.erb +0 -6
  150. data/lib/install/examples/react/babel.config.js +0 -99
  151. data/lib/install/examples/react/hello_react.jsx +0 -26
  152. data/lib/install/examples/react/tsconfig.json +0 -21
  153. data/lib/install/examples/stimulus/application.js +0 -1
  154. data/lib/install/examples/stimulus/controllers/hello_controller.js +0 -18
  155. data/lib/install/examples/stimulus/controllers/index.js +0 -9
  156. data/lib/install/examples/svelte/app.svelte +0 -11
  157. data/lib/install/examples/svelte/hello_svelte.js +0 -20
  158. data/lib/install/examples/typescript/hello_typescript.ts +0 -4
  159. data/lib/install/examples/typescript/tsconfig.json +0 -24
  160. data/lib/install/examples/vue/app.vue +0 -22
  161. data/lib/install/examples/vue/hello_vue.js +0 -72
  162. data/lib/install/loaders/coffee.js +0 -6
  163. data/lib/install/loaders/elm.js +0 -25
  164. data/lib/install/loaders/erb.js +0 -11
  165. data/lib/install/loaders/svelte.js +0 -9
  166. data/lib/install/loaders/vue.js +0 -6
  167. data/lib/install/react.rb +0 -18
  168. data/lib/install/stimulus.rb +0 -12
  169. data/lib/install/svelte.rb +0 -29
  170. data/lib/install/typescript.rb +0 -39
  171. data/lib/install/vue.rb +0 -49
  172. data/lib/tasks/installers.rake +0 -42
  173. data/package/config_types/__tests__/config_list.js +0 -118
  174. data/package/config_types/__tests__/config_object.js +0 -43
  175. data/package/config_types/config_list.js +0 -75
  176. data/package/config_types/config_object.js +0 -55
  177. data/package/config_types/index.js +0 -7
  178. data/package/rules/module.css.js +0 -3
  179. data/package/rules/module.sass.js +0 -8
  180. data/package/rules/node_modules.js +0 -22
  181. data/package/utils/__tests__/deep_assign.js +0 -32
  182. data/package/utils/__tests__/deep_merge.js +0 -10
  183. data/package/utils/__tests__/get_style_rule.js +0 -65
  184. data/package/utils/__tests__/objectify.js +0 -9
  185. data/package/utils/deep_assign.js +0 -22
  186. data/package/utils/deep_merge.js +0 -22
  187. data/package/utils/objectify.js +0 -3
  188. /data/test/test_app/app/{javascript/packs → packs/entrypoints}/multi_entry.css +0 -0
  189. /data/test/test_app/app/{javascript/packs → packs/entrypoints}/multi_entry.js +0 -0
@@ -1,82 +0,0 @@
1
- module.exports = function(api) {
2
- var validEnv = ['development', 'test', 'production']
3
- var currentEnv = api.env()
4
- var isDevelopmentEnv = api.env('development')
5
- var isProductionEnv = api.env('production')
6
- var isTestEnv = api.env('test')
7
-
8
- if (!validEnv.includes(currentEnv)) {
9
- throw new Error(
10
- 'Please specify a valid `NODE_ENV` or ' +
11
- '`BABEL_ENV` environment variables. Valid values are "development", ' +
12
- '"test", and "production". Instead, received: ' +
13
- JSON.stringify(currentEnv) +
14
- '.'
15
- )
16
- }
17
-
18
- return {
19
- presets: [
20
- isTestEnv && [
21
- '@babel/preset-env',
22
- {
23
- targets: {
24
- node: 'current'
25
- }
26
- }
27
- ],
28
- (isProductionEnv || isDevelopmentEnv) && [
29
- '@babel/preset-env',
30
- {
31
- forceAllTransforms: true,
32
- useBuiltIns: 'entry',
33
- corejs: 3,
34
- modules: false,
35
- exclude: ['transform-typeof-symbol']
36
- }
37
- ]
38
- ].filter(Boolean),
39
- plugins: [
40
- 'babel-plugin-macros',
41
- '@babel/plugin-syntax-dynamic-import',
42
- isTestEnv && 'babel-plugin-dynamic-import-node',
43
- '@babel/plugin-transform-destructuring',
44
- [
45
- '@babel/plugin-proposal-class-properties',
46
- {
47
- loose: true
48
- }
49
- ],
50
- [
51
- '@babel/plugin-proposal-object-rest-spread',
52
- {
53
- useBuiltIns: true
54
- }
55
- ],
56
- [
57
- '@babel/plugin-proposal-private-methods',
58
- {
59
- loose: true
60
- }
61
- ],
62
- [
63
- '@babel/plugin-proposal-private-property-in-object',
64
- {
65
- loose: true
66
- }
67
- ],
68
- [
69
- '@babel/plugin-transform-runtime',
70
- {
71
- helpers: false
72
- }
73
- ],
74
- [
75
- '@babel/plugin-transform-regenerator',
76
- {
77
- async: false
78
- }
79
- ]
80
- ].filter(Boolean)
81
- }
82
- }
@@ -1,12 +0,0 @@
1
- module.exports = {
2
- plugins: [
3
- require('postcss-import'),
4
- require('postcss-flexbugs-fixes'),
5
- require('postcss-preset-env')({
6
- autoprefixer: {
7
- flexbox: 'no-2009'
8
- },
9
- stage: 3
10
- })
11
- ]
12
- }
@@ -1,3 +0,0 @@
1
- const { environment } = require('@rails/webpacker')
2
-
3
- module.exports = environment
data/lib/install/elm.rb DELETED
@@ -1,39 +0,0 @@
1
- require "webpacker/configuration"
2
-
3
- say "Copying elm loader to config/webpack/loaders"
4
- copy_file "#{__dir__}/loaders/elm.js", Rails.root.join("config/webpack/loaders/elm.js").to_s
5
-
6
- say "Adding elm loader to config/webpack/environment.js"
7
- insert_into_file Rails.root.join("config/webpack/environment.js").to_s,
8
- "const elm = require('./loaders/elm')\n",
9
- after: /require\(('|")@rails\/webpacker\1\);?\n/
10
-
11
- insert_into_file Rails.root.join("config/webpack/environment.js").to_s,
12
- "environment.loaders.prepend('elm', elm)\n",
13
- before: "module.exports"
14
-
15
- say "Copying Elm example entry file to #{Webpacker.config.source_entry_path}"
16
- copy_file "#{__dir__}/examples/elm/hello_elm.js",
17
- "#{Webpacker.config.source_entry_path}/hello_elm.js"
18
-
19
- say "Copying Elm app file to #{Webpacker.config.source_path}"
20
- copy_file "#{__dir__}/examples/elm/Main.elm",
21
- "#{Webpacker.config.source_path}/Main.elm"
22
-
23
- say "Installing all Elm dependencies"
24
- run "yarn add elm elm-webpack-loader"
25
- run "yarn add --dev elm-hot-webpack-loader"
26
- run "yarn run elm init"
27
- run "yarn run elm make #{Webpacker.config.source_path}/Main.elm"
28
-
29
- say "Updating webpack paths to include .elm file extension"
30
- insert_into_file Webpacker.config.config_path, "- .elm\n".indent(4), after: /\s+extensions:\n/
31
-
32
- say "Updating Elm source location"
33
- gsub_file "elm.json", /\"src\"\n/,
34
- %("#{Webpacker.config.source_path.relative_path_from(Rails.root)}"\n)
35
-
36
- say "Updating .gitignore to include elm-stuff folder"
37
- insert_into_file ".gitignore", "/elm-stuff\n", before: "/node_modules\n"
38
-
39
- say "Webpacker now supports Elm 🎉", :green
data/lib/install/erb.rb DELETED
@@ -1,25 +0,0 @@
1
- require "webpacker/configuration"
2
-
3
- say "Copying erb loader to config/webpack/loaders"
4
- copy_file "#{__dir__}/loaders/erb.js", Rails.root.join("config/webpack/loaders/erb.js").to_s
5
-
6
- say "Adding erb loader to config/webpack/environment.js"
7
- insert_into_file Rails.root.join("config/webpack/environment.js").to_s,
8
- "const erb = require('./loaders/erb')\n",
9
- after: /require\(('|")@rails\/webpacker\1\);?\n/
10
-
11
- insert_into_file Rails.root.join("config/webpack/environment.js").to_s,
12
- "environment.loaders.prepend('erb', erb)\n",
13
- before: "module.exports"
14
-
15
- say "Updating webpack paths to include .erb file extension"
16
- insert_into_file Webpacker.config.config_path, "- .erb\n".indent(4), after: /\s+extensions:\n/
17
-
18
- say "Copying the example entry file to #{Webpacker.config.source_entry_path}"
19
- copy_file "#{__dir__}/examples/erb/hello_erb.js.erb",
20
- "#{Webpacker.config.source_entry_path}/hello_erb.js.erb"
21
-
22
- say "Installing all Erb dependencies"
23
- run "yarn add rails-erb-loader"
24
-
25
- say "Webpacker now supports Erb in JS 🎉", :green
@@ -1,9 +0,0 @@
1
- import { Component } from '@angular/core';
2
-
3
- @Component({
4
- selector: 'hello-angular',
5
- template: `<h1>Hello {{name}}</h1>`
6
- })
7
- export class AppComponent {
8
- name = 'Angular!';
9
- }
@@ -1,16 +0,0 @@
1
- import { BrowserModule } from '@angular/platform-browser';
2
- import { NgModule } from '@angular/core';
3
-
4
- import { AppComponent } from './app.component';
5
-
6
- @NgModule({
7
- declarations: [
8
- AppComponent
9
- ],
10
- imports: [
11
- BrowserModule
12
- ],
13
- providers: [],
14
- bootstrap: [AppComponent]
15
- })
16
- export class AppModule { }
@@ -1,8 +0,0 @@
1
- import './polyfills.ts';
2
-
3
- import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
4
- import { AppModule } from './app/app.module';
5
-
6
- document.addEventListener('DOMContentLoaded', () => {
7
- platformBrowserDynamic().bootstrapModule(AppModule);
8
- });
@@ -1,73 +0,0 @@
1
- /**
2
- * This file includes polyfills needed by Angular and is loaded before the app.
3
- * You can add your own extra polyfills to this file.
4
- *
5
- * This file is divided into 2 sections:
6
- * 1. Browser polyfills. These are applied before loading ZoneJS and are sorted by browsers.
7
- * 2. Application imports. Files imported after ZoneJS that should be loaded before your main
8
- * file.
9
- *
10
- * The current setup is for so-called "evergreen" browsers; the last versions of browsers that
11
- * automatically update themselves. This includes Safari >= 10, Chrome >= 55 (including Opera),
12
- * Edge >= 13 on the desktop, and iOS 10 and Chrome on mobile.
13
- *
14
- * Learn more in https://angular.io/docs/ts/latest/guide/browser-support.html
15
- */
16
-
17
- /***************************************************************************************************
18
- * BROWSER POLYFILLS
19
- */
20
-
21
- /** IE9, IE10 and IE11 requires all of the following polyfills. **/
22
- // import 'core-js/es6/symbol';
23
- // import 'core-js/es6/object';
24
- // import 'core-js/es6/function';
25
- // import 'core-js/es6/parse-int';
26
- // import 'core-js/es6/parse-float';
27
- // import 'core-js/es6/number';
28
- // import 'core-js/es6/math';
29
- // import 'core-js/es6/string';
30
- // import 'core-js/es6/date';
31
- // import 'core-js/es6/array';
32
- // import 'core-js/es6/regexp';
33
- // import 'core-js/es6/map';
34
- // import 'core-js/es6/weak-map';
35
- // import 'core-js/es6/set';
36
-
37
- /** IE10 and IE11 requires the following for NgClass support on SVG elements */
38
- // import 'classlist.js'; // Run `npm install --save classlist.js`.
39
-
40
- /** Evergreen browsers require these. **/
41
- import 'core-js/es/reflect';
42
- import 'core-js/proposals/reflect-metadata';
43
-
44
-
45
- /**
46
- * Required to support Web Animations `@angular/animation`.
47
- * Needed for: All but Chrome, Firefox and Opera. http://caniuse.com/#feat=web-animation
48
- **/
49
- // import 'web-animations-js'; // Run `npm install --save web-animations-js`.
50
-
51
-
52
-
53
- /***************************************************************************************************
54
- * Zone JS is required by Angular itself.
55
- */
56
- import 'zone.js/dist/zone';
57
- // import 'zone.js/dist/long-stack-trace-zone' // async stack traces with zone.js
58
-
59
-
60
-
61
- /***************************************************************************************************
62
- * APPLICATION IMPORTS
63
- */
64
-
65
- /**
66
- * Date, currency, decimal and percent pipes.
67
- * Needed for: All but Chrome, Firefox, Edge, IE11 and Safari 10
68
- */
69
- // import 'intl'; // Run `npm install --save intl`.
70
- /**
71
- * Need to import at least one locale-data with intl.
72
- */
73
- // import 'intl/locale-data/jsonp/en';
@@ -1,7 +0,0 @@
1
- // Run this Angular example by adding the following HTML markup to your view:
2
- //
3
- // <hello-angular>Loading...</hello-angular>
4
- //
5
- // <%= javascript_pack_tag 'hello_angular' %>
6
-
7
- require('../hello_angular')
@@ -1,4 +0,0 @@
1
- # Run this example by adding <%= javascript_pack_tag 'hello_coffee' %> to the head of your layout file,
2
- # like app/views/layouts/application.html.erb.
3
-
4
- console.log 'Hello world from coffeescript'
@@ -1,55 +0,0 @@
1
- module Main exposing (..)
2
-
3
- import Browser
4
- import Html exposing (Html, h1, text)
5
- import Html.Attributes exposing (style)
6
-
7
- -- MODEL
8
-
9
- type alias Model =
10
- {
11
- }
12
-
13
- -- INIT
14
-
15
- init : (Model, Cmd Message)
16
- init =
17
- (Model, Cmd.none)
18
-
19
- -- VIEW
20
-
21
- view : Model -> Html Message
22
- view model =
23
- -- The inline style is being used for example purposes in order to keep this example simple and
24
- -- avoid loading additional resources. Use a proper stylesheet when building your own app.
25
- h1 [style "display" "flex", style "justify-content" "center"]
26
- [text "Hello Elm!"]
27
-
28
- -- MESSAGE
29
-
30
- type Message
31
- = None
32
-
33
- -- UPDATE
34
-
35
- update : Message -> Model -> (Model, Cmd Message)
36
- update message model =
37
- (model, Cmd.none)
38
-
39
- -- SUBSCRIPTIONS
40
-
41
- subscriptions : Model -> Sub Message
42
- subscriptions model =
43
- Sub.none
44
-
45
- -- MAIN
46
-
47
- main : Program (Maybe {}) Model Message
48
- main =
49
- Browser.element
50
- {
51
- init = always init,
52
- view = view,
53
- update = update,
54
- subscriptions = subscriptions
55
- }
@@ -1,16 +0,0 @@
1
- // Run this example by adding <%= javascript_pack_tag "hello_elm" %> to the
2
- // head of your layout file, like app/views/layouts/application.html.erb.
3
- // It will render "Hello Elm!" within the page.
4
-
5
- import {
6
- Elm
7
- } from '../Main'
8
-
9
- document.addEventListener('DOMContentLoaded', () => {
10
- const target = document.createElement('div')
11
-
12
- document.body.appendChild(target)
13
- Elm.Main.init({
14
- node: target
15
- })
16
- })
@@ -1,6 +0,0 @@
1
- // Run this example by adding <%%= javascript_pack_tag 'hello_erb' %> to the head of your layout file,
2
- // like app/views/layouts/application.html.erb. Don't forget to uncomment erb tag after adding it to your layout file.
3
-
4
- <% name = 'Erb' %>
5
-
6
- console.log('Hello world from <%= name %>')
@@ -1,99 +0,0 @@
1
- module.exports = function(api) {
2
- var validEnv = ['development', 'test', 'production']
3
- var currentEnv = api.env()
4
- var isDevelopmentEnv = api.env('development')
5
- var isProductionEnv = api.env('production')
6
- var isTestEnv = api.env('test')
7
-
8
- if (!validEnv.includes(currentEnv)) {
9
- throw new Error(
10
- 'Please specify a valid `NODE_ENV` or ' +
11
- '`BABEL_ENV` environment variables. Valid values are "development", ' +
12
- '"test", and "production". Instead, received: ' +
13
- JSON.stringify(currentEnv) +
14
- '.'
15
- )
16
- }
17
-
18
- return {
19
- presets: [
20
- isTestEnv && [
21
- '@babel/preset-env',
22
- {
23
- targets: {
24
- node: 'current'
25
- },
26
- modules: 'commonjs'
27
- },
28
- '@babel/preset-react'
29
- ],
30
- (isProductionEnv || isDevelopmentEnv) && [
31
- '@babel/preset-env',
32
- {
33
- forceAllTransforms: true,
34
- useBuiltIns: 'entry',
35
- corejs: 3,
36
- modules: false,
37
- exclude: ['transform-typeof-symbol']
38
- }
39
- ],
40
- [
41
- '@babel/preset-react',
42
- {
43
- development: isDevelopmentEnv || isTestEnv,
44
- useBuiltIns: true
45
- }
46
- ]
47
- ].filter(Boolean),
48
- plugins: [
49
- 'babel-plugin-macros',
50
- '@babel/plugin-syntax-dynamic-import',
51
- isTestEnv && 'babel-plugin-dynamic-import-node',
52
- '@babel/plugin-transform-destructuring',
53
- [
54
- '@babel/plugin-proposal-class-properties',
55
- {
56
- loose: true
57
- }
58
- ],
59
- [
60
- '@babel/plugin-proposal-object-rest-spread',
61
- {
62
- useBuiltIns: true
63
- }
64
- ],
65
- [
66
- '@babel/plugin-proposal-private-methods',
67
- {
68
- loose: true
69
- }
70
- ],
71
- [
72
- '@babel/plugin-proposal-private-property-in-object',
73
- {
74
- loose: true
75
- }
76
- ],
77
- [
78
- '@babel/plugin-transform-runtime',
79
- {
80
- helpers: false,
81
- regenerator: true,
82
- corejs: false
83
- }
84
- ],
85
- [
86
- '@babel/plugin-transform-regenerator',
87
- {
88
- async: false
89
- }
90
- ],
91
- isProductionEnv && [
92
- 'babel-plugin-transform-react-remove-prop-types',
93
- {
94
- removeImport: true
95
- }
96
- ]
97
- ].filter(Boolean)
98
- }
99
- }
@@ -1,26 +0,0 @@
1
- // Run this example by adding <%= javascript_pack_tag 'hello_react' %> to the head of your layout file,
2
- // like app/views/layouts/application.html.erb. All it does is render <div>Hello React</div> at the bottom
3
- // of the page.
4
-
5
- import React from 'react'
6
- import ReactDOM from 'react-dom'
7
- import PropTypes from 'prop-types'
8
-
9
- const Hello = props => (
10
- <div>Hello {props.name}!</div>
11
- )
12
-
13
- Hello.defaultProps = {
14
- name: 'David'
15
- }
16
-
17
- Hello.propTypes = {
18
- name: PropTypes.string
19
- }
20
-
21
- document.addEventListener('DOMContentLoaded', () => {
22
- ReactDOM.render(
23
- <Hello name="React" />,
24
- document.body.appendChild(document.createElement('div')),
25
- )
26
- })
@@ -1,21 +0,0 @@
1
- {
2
- "compilerOptions": {
3
- "declaration": false,
4
- "emitDecoratorMetadata": true,
5
- "experimentalDecorators": true,
6
- "lib": ["es6", "dom"],
7
- "module": "es6",
8
- "moduleResolution": "node",
9
- "sourceMap": true,
10
- "target": "es5",
11
- "jsx": "react",
12
- "noEmit": true
13
- },
14
- "exclude": [
15
- "**/*.spec.ts",
16
- "node_modules",
17
- "vendor",
18
- "public"
19
- ],
20
- "compileOnSave": false
21
- }
@@ -1 +0,0 @@
1
- import "controllers"
@@ -1,18 +0,0 @@
1
- // Visit The Stimulus Handbook for more details
2
- // https://stimulusjs.org/handbook/introduction
3
- //
4
- // This example controller works with specially annotated HTML like:
5
- //
6
- // <div data-controller="hello">
7
- // <h1 data-target="hello.output"></h1>
8
- // </div>
9
-
10
- import { Controller } from "stimulus"
11
-
12
- export default class extends Controller {
13
- static targets = [ "output" ]
14
-
15
- connect() {
16
- this.outputTarget.textContent = 'Hello, Stimulus!'
17
- }
18
- }
@@ -1,9 +0,0 @@
1
- // Load all the controllers within this directory and all subdirectories.
2
- // Controller files must be named *_controller.js.
3
-
4
- import { Application } from "stimulus"
5
- import { definitionsFromContext } from "stimulus/webpack-helpers"
6
-
7
- const application = Application.start()
8
- const context = require.context("controllers", true, /_controller\.js$/)
9
- application.load(definitionsFromContext(context))
@@ -1,11 +0,0 @@
1
- <script>
2
- export let name;
3
- </script>
4
-
5
- <style>
6
- h1 {
7
- color: #FF3E00;
8
- }
9
- </style>
10
-
11
- <h1>Hello {name}!</h1>
@@ -1,20 +0,0 @@
1
- /* eslint no-console: 0 */
2
- // Run this example by adding <%= javascript_pack_tag 'hello_svelte' %> (and
3
- // <%= stylesheet_pack_tag 'hello_svelte' %> if you have styles in your component)
4
- // to the head of your layout file,
5
- // like app/views/layouts/application.html.erb.
6
- // All it does is render <div>Hello Svelte!</div> at the bottom of the page.
7
-
8
- import App from '../app.svelte'
9
-
10
- document.addEventListener('DOMContentLoaded', () => {
11
- const app = new App({
12
- target: document.body,
13
- props: {
14
- name: 'Svelte'
15
- }
16
- });
17
-
18
- window.app = app;
19
- })
20
-
@@ -1,4 +0,0 @@
1
- // Run this example by adding <%= javascript_pack_tag 'hello_typescript' %> to the head of your layout file,
2
- // like app/views/layouts/application.html.erb.
3
-
4
- console.log('Hello world from typescript');
@@ -1,24 +0,0 @@
1
- {
2
- "compilerOptions": {
3
- "declaration": false,
4
- "emitDecoratorMetadata": true,
5
- "experimentalDecorators": true,
6
- "lib": ["es6", "dom"],
7
- "module": "es6",
8
- "moduleResolution": "node",
9
- "baseUrl": ".",
10
- "paths": {
11
- "*": ["node_modules/*", "app/javascript/*"]
12
- },
13
- "sourceMap": true,
14
- "target": "es5",
15
- "noEmit": true
16
- },
17
- "exclude": [
18
- "**/*.spec.ts",
19
- "node_modules",
20
- "vendor",
21
- "public"
22
- ],
23
- "compileOnSave": false
24
- }
@@ -1,22 +0,0 @@
1
- <template>
2
- <div id="app">
3
- <p>{{ message }}</p>
4
- </div>
5
- </template>
6
-
7
- <script>
8
- export default {
9
- data: function () {
10
- return {
11
- message: "Hello Vue!"
12
- }
13
- }
14
- }
15
- </script>
16
-
17
- <style scoped>
18
- p {
19
- font-size: 2em;
20
- text-align: center;
21
- }
22
- </style>