webpacker 5.0.1 → 6.0.0.beta

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 (172) hide show
  1. checksums.yaml +4 -4
  2. data/.eslintrc.js +8 -8
  3. data/.github/workflows/jest.yml +38 -0
  4. data/.github/workflows/js-lint.yml +39 -0
  5. data/.github/workflows/rubocop.yml +39 -0
  6. data/.github/workflows/ruby.yml +70 -0
  7. data/.gitignore +2 -0
  8. data/.node-version +1 -1
  9. data/.rubocop.yml +11 -16
  10. data/6_0_upgrade.md +43 -0
  11. data/CHANGELOG.md +49 -3
  12. data/CONTRIBUTING.md +1 -1
  13. data/Gemfile.lock +91 -85
  14. data/README.md +233 -133
  15. data/lib/install/config/webpack/base.js +3 -0
  16. data/lib/install/config/webpack/development.js +2 -2
  17. data/lib/install/config/webpack/production.js +2 -2
  18. data/lib/install/config/webpack/test.js +2 -2
  19. data/lib/install/config/webpacker.yml +9 -42
  20. data/lib/install/javascript/packs/application.css +9 -0
  21. data/lib/install/javascript/packs/application.js +3 -1
  22. data/lib/install/template.rb +33 -19
  23. data/lib/tasks/webpacker.rake +2 -11
  24. data/lib/tasks/webpacker/binstubs.rake +6 -4
  25. data/lib/tasks/webpacker/check_binstubs.rake +4 -4
  26. data/lib/tasks/webpacker/check_node.rake +1 -1
  27. data/lib/tasks/webpacker/check_yarn.rake +2 -3
  28. data/lib/tasks/webpacker/compile.rake +4 -2
  29. data/lib/tasks/webpacker/info.rake +12 -10
  30. data/lib/tasks/webpacker/install.rake +6 -4
  31. data/lib/tasks/webpacker/verify_install.rake +2 -1
  32. data/lib/tasks/webpacker/yarn_install.rake +9 -1
  33. data/lib/webpacker/commands.rb +1 -1
  34. data/lib/webpacker/compiler.rb +22 -11
  35. data/lib/webpacker/configuration.rb +7 -27
  36. data/lib/webpacker/dev_server_proxy.rb +3 -1
  37. data/lib/webpacker/dev_server_runner.rb +23 -4
  38. data/lib/webpacker/helper.rb +55 -46
  39. data/lib/webpacker/manifest.rb +1 -1
  40. data/lib/webpacker/railtie.rb +0 -43
  41. data/lib/webpacker/runner.rb +1 -0
  42. data/lib/webpacker/version.rb +1 -1
  43. data/lib/webpacker/webpack_runner.rb +7 -2
  44. data/package.json +27 -43
  45. data/package/__tests__/config.js +6 -27
  46. data/package/__tests__/dev_server.js +2 -0
  47. data/package/__tests__/development.js +18 -7
  48. data/package/__tests__/env.js +12 -4
  49. data/package/__tests__/production.js +6 -6
  50. data/package/__tests__/staging.js +7 -6
  51. data/package/__tests__/test.js +4 -5
  52. data/package/babel/preset.js +55 -0
  53. data/package/config.js +4 -9
  54. data/package/configPath.js +3 -0
  55. data/package/dev_server.js +1 -1
  56. data/package/env.js +9 -4
  57. data/package/environments/__tests__/base.js +21 -36
  58. data/package/environments/base.js +63 -127
  59. data/package/environments/development.js +46 -39
  60. data/package/environments/production.js +63 -70
  61. data/package/environments/test.js +2 -2
  62. data/package/index.js +13 -8
  63. data/package/rules/babel.js +20 -11
  64. data/package/rules/coffee.js +6 -0
  65. data/package/rules/erb.js +15 -0
  66. data/package/rules/file.js +19 -18
  67. data/package/rules/index.js +15 -18
  68. data/package/rules/less.js +22 -0
  69. data/package/rules/sass.js +13 -10
  70. data/package/rules/svg.js +20 -0
  71. data/package/utils/get_style_rule.js +26 -36
  72. data/package/utils/helpers.js +26 -35
  73. data/test/compiler_test.rb +4 -11
  74. data/test/configuration_test.rb +2 -32
  75. data/test/dev_server_runner_test.rb +25 -6
  76. data/test/engine_rake_tasks_test.rb +39 -0
  77. data/test/helper_test.rb +18 -9
  78. data/test/mounted_app/Rakefile +4 -0
  79. data/test/mounted_app/test/dummy/Rakefile +3 -0
  80. data/test/mounted_app/test/dummy/bin/rails +3 -0
  81. data/test/mounted_app/test/dummy/bin/rake +3 -0
  82. data/test/mounted_app/test/dummy/config.ru +5 -0
  83. data/test/mounted_app/test/dummy/config/application.rb +10 -0
  84. data/test/mounted_app/test/dummy/config/environment.rb +3 -0
  85. data/test/mounted_app/test/dummy/config/webpacker.yml +75 -0
  86. data/test/mounted_app/test/dummy/package.json +7 -0
  87. data/test/rake_tasks_test.rb +1 -10
  88. data/test/test_app/config/application.rb +0 -1
  89. data/test/test_app/config/webpacker.yml +3 -21
  90. data/test/test_app/config/webpacker_public_root.yml +0 -1
  91. data/test/test_app/public/packs/manifest.json +18 -13
  92. data/test/test_app/some.config.js +0 -0
  93. data/test/webpack_runner_test.rb +10 -4
  94. data/webpacker.gemspec +1 -1
  95. data/yarn.lock +2657 -6224
  96. metadata +49 -90
  97. data/.travis.yml +0 -43
  98. data/docs/assets.md +0 -119
  99. data/docs/cloud9.md +0 -310
  100. data/docs/css.md +0 -253
  101. data/docs/deployment.md +0 -130
  102. data/docs/docker.md +0 -68
  103. data/docs/engines.md +0 -213
  104. data/docs/env.md +0 -65
  105. data/docs/es6.md +0 -72
  106. data/docs/folder-structure.md +0 -66
  107. data/docs/integrations.md +0 -220
  108. data/docs/misc.md +0 -23
  109. data/docs/props.md +0 -223
  110. data/docs/testing.md +0 -137
  111. data/docs/troubleshooting.md +0 -156
  112. data/docs/typescript.md +0 -125
  113. data/docs/v4-upgrade.md +0 -142
  114. data/docs/webpack-dev-server.md +0 -92
  115. data/docs/webpack.md +0 -364
  116. data/docs/yarn.md +0 -23
  117. data/lib/install/angular.rb +0 -23
  118. data/lib/install/coffee.rb +0 -25
  119. data/lib/install/config/.browserslistrc +0 -1
  120. data/lib/install/config/babel.config.js +0 -72
  121. data/lib/install/config/postcss.config.js +0 -12
  122. data/lib/install/config/webpack/environment.js +0 -3
  123. data/lib/install/elm.rb +0 -39
  124. data/lib/install/erb.rb +0 -25
  125. data/lib/install/examples/angular/hello_angular.js +0 -7
  126. data/lib/install/examples/angular/hello_angular/app/app.component.ts +0 -9
  127. data/lib/install/examples/angular/hello_angular/app/app.module.ts +0 -16
  128. data/lib/install/examples/angular/hello_angular/index.ts +0 -8
  129. data/lib/install/examples/angular/hello_angular/polyfills.ts +0 -73
  130. data/lib/install/examples/coffee/hello_coffee.coffee +0 -4
  131. data/lib/install/examples/elm/Main.elm +0 -55
  132. data/lib/install/examples/elm/hello_elm.js +0 -16
  133. data/lib/install/examples/erb/hello_erb.js.erb +0 -6
  134. data/lib/install/examples/react/babel.config.js +0 -87
  135. data/lib/install/examples/react/hello_react.jsx +0 -26
  136. data/lib/install/examples/react/tsconfig.json +0 -20
  137. data/lib/install/examples/stimulus/application.js +0 -1
  138. data/lib/install/examples/stimulus/controllers/hello_controller.js +0 -18
  139. data/lib/install/examples/stimulus/controllers/index.js +0 -9
  140. data/lib/install/examples/svelte/app.svelte +0 -11
  141. data/lib/install/examples/svelte/hello_svelte.js +0 -20
  142. data/lib/install/examples/typescript/hello_typescript.ts +0 -4
  143. data/lib/install/examples/typescript/tsconfig.json +0 -23
  144. data/lib/install/examples/vue/app.vue +0 -22
  145. data/lib/install/examples/vue/hello_vue.js +0 -72
  146. data/lib/install/loaders/coffee.js +0 -6
  147. data/lib/install/loaders/elm.js +0 -25
  148. data/lib/install/loaders/erb.js +0 -11
  149. data/lib/install/loaders/svelte.js +0 -9
  150. data/lib/install/loaders/typescript.js +0 -11
  151. data/lib/install/loaders/vue.js +0 -6
  152. data/lib/install/react.rb +0 -18
  153. data/lib/install/stimulus.rb +0 -12
  154. data/lib/install/svelte.rb +0 -29
  155. data/lib/install/typescript.rb +0 -46
  156. data/lib/install/vue.rb +0 -49
  157. data/lib/tasks/installers.rake +0 -42
  158. data/package/config_types/__tests__/config_list.js +0 -118
  159. data/package/config_types/__tests__/config_object.js +0 -43
  160. data/package/config_types/config_list.js +0 -75
  161. data/package/config_types/config_object.js +0 -55
  162. data/package/config_types/index.js +0 -7
  163. data/package/rules/module.css.js +0 -3
  164. data/package/rules/module.sass.js +0 -8
  165. data/package/rules/node_modules.js +0 -24
  166. data/package/utils/__tests__/deep_assign.js +0 -32
  167. data/package/utils/__tests__/deep_merge.js +0 -10
  168. data/package/utils/__tests__/get_style_rule.js +0 -65
  169. data/package/utils/__tests__/objectify.js +0 -9
  170. data/package/utils/deep_assign.js +0 -22
  171. data/package/utils/deep_merge.js +0 -22
  172. data/package/utils/objectify.js +0 -3
@@ -1,87 +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-transform-runtime',
67
- {
68
- helpers: false,
69
- regenerator: true,
70
- corejs: false
71
- }
72
- ],
73
- [
74
- '@babel/plugin-transform-regenerator',
75
- {
76
- async: false
77
- }
78
- ],
79
- isProductionEnv && [
80
- 'babel-plugin-transform-react-remove-prop-types',
81
- {
82
- removeImport: true
83
- }
84
- ]
85
- ].filter(Boolean)
86
- }
87
- }
@@ -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,20 +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
- },
13
- "exclude": [
14
- "**/*.spec.ts",
15
- "node_modules",
16
- "vendor",
17
- "public"
18
- ],
19
- "compileOnSave": false
20
- }
@@ -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,23 +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
- },
16
- "exclude": [
17
- "**/*.spec.ts",
18
- "node_modules",
19
- "vendor",
20
- "public"
21
- ],
22
- "compileOnSave": false
23
- }
@@ -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>
@@ -1,72 +0,0 @@
1
- /* eslint no-console: 0 */
2
- // Run this example by adding <%= javascript_pack_tag 'hello_vue' %> (and
3
- // <%= stylesheet_pack_tag 'hello_vue' %> 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 Vue</div> at the bottom of the page.
7
-
8
- import Vue from 'vue'
9
- import App from '../app.vue'
10
-
11
- document.addEventListener('DOMContentLoaded', () => {
12
- const app = new Vue({
13
- render: h => h(App)
14
- }).$mount()
15
- document.body.appendChild(app.$el)
16
-
17
- console.log(app)
18
- })
19
-
20
-
21
- // The above code uses Vue without the compiler, which means you cannot
22
- // use Vue to target elements in your existing html templates. You would
23
- // need to always use single file components.
24
- // To be able to target elements in your existing html/erb templates,
25
- // comment out the above code and uncomment the below
26
- // Add <%= javascript_pack_tag 'hello_vue' %> to your layout
27
- // Then add this markup to your html template:
28
- //
29
- // <div id='hello'>
30
- // {{message}}
31
- // <app></app>
32
- // </div>
33
-
34
-
35
- // import Vue from 'vue/dist/vue.esm'
36
- // import App from '../app.vue'
37
- //
38
- // document.addEventListener('DOMContentLoaded', () => {
39
- // const app = new Vue({
40
- // el: '#hello',
41
- // data: {
42
- // message: "Can you say hello?"
43
- // },
44
- // components: { App }
45
- // })
46
- // })
47
- //
48
- //
49
- //
50
- // If the project is using turbolinks, install 'vue-turbolinks':
51
- //
52
- // yarn add vue-turbolinks
53
- //
54
- // Then uncomment the code block below:
55
- //
56
- // import TurbolinksAdapter from 'vue-turbolinks'
57
- // import Vue from 'vue/dist/vue.esm'
58
- // import App from '../app.vue'
59
- //
60
- // Vue.use(TurbolinksAdapter)
61
- //
62
- // document.addEventListener('turbolinks:load', () => {
63
- // const app = new Vue({
64
- // el: '#hello',
65
- // data: () => {
66
- // return {
67
- // message: "Can you say hello?"
68
- // }
69
- // },
70
- // components: { App }
71
- // })
72
- // })
@@ -1,6 +0,0 @@
1
- module.exports = {
2
- test: /\.coffee(\.erb)?$/,
3
- use: [{
4
- loader: 'coffee-loader'
5
- }]
6
- }
@@ -1,25 +0,0 @@
1
- const { resolve } = require('path')
2
-
3
- const isProduction = process.env.NODE_ENV === 'production'
4
- const isDevelopment = process.env.NODE_ENV === 'development'
5
- const elmSource = resolve(process.cwd())
6
- const elmBinary = `${elmSource}/node_modules/.bin/elm`
7
-
8
- const options = {
9
- cwd: elmSource,
10
- pathToElm: elmBinary,
11
- optimize: isProduction,
12
- verbose: isDevelopment,
13
- debug: isDevelopment
14
- }
15
-
16
- const elmWebpackLoader = {
17
- loader: 'elm-webpack-loader',
18
- options: options
19
- }
20
-
21
- module.exports = {
22
- test: /\.elm(\.erb)?$/,
23
- exclude: [/elm-stuff/, /node_modules/],
24
- use: isProduction ? [elmWebpackLoader] : [{ loader: 'elm-hot-webpack-loader' }, elmWebpackLoader]
25
- }
@@ -1,11 +0,0 @@
1
- module.exports = {
2
- test: /\.erb$/,
3
- enforce: 'pre',
4
- exclude: /node_modules/,
5
- use: [{
6
- loader: 'rails-erb-loader',
7
- options: {
8
- runner: (/^win/.test(process.platform) ? 'ruby ' : '') + 'bin/rails runner'
9
- }
10
- }]
11
- }
@@ -1,9 +0,0 @@
1
- module.exports = {
2
- test: /\.svelte(\.erb)?$/,
3
- use: [{
4
- loader: 'svelte-loader',
5
- options: {
6
- hotReload: false
7
- }
8
- }],
9
- }
@@ -1,11 +0,0 @@
1
- const PnpWebpackPlugin = require('pnp-webpack-plugin')
2
-
3
- module.exports = {
4
- test: /\.tsx?(\.erb)?$/,
5
- use: [
6
- {
7
- loader: 'ts-loader',
8
- options: PnpWebpackPlugin.tsLoaderOptions()
9
- }
10
- ]
11
- }
@@ -1,6 +0,0 @@
1
- module.exports = {
2
- test: /\.vue(\.erb)?$/,
3
- use: [{
4
- loader: 'vue-loader'
5
- }]
6
- }
@@ -1,18 +0,0 @@
1
- require "webpacker/configuration"
2
- require "fileutils"
3
-
4
- replace_babel_config = FileUtils.compare_file(Rails.root.join("babel.config.js"), "#{__dir__}/config/babel.config.js")
5
-
6
- say "Copying babel.config.js to app root directory"
7
- copy_file "#{__dir__}/examples/react/babel.config.js", "babel.config.js", force: replace_babel_config
8
-
9
- say "Copying react example entry file to #{Webpacker.config.source_entry_path}"
10
- copy_file "#{__dir__}/examples/react/hello_react.jsx", "#{Webpacker.config.source_entry_path}/hello_react.jsx"
11
-
12
- say "Updating webpack paths to include .jsx file extension"
13
- insert_into_file Webpacker.config.config_path, "- .jsx\n".indent(4), after: /\s+extensions:\n/
14
-
15
- say "Installing all react dependencies"
16
- run "yarn add react react-dom @babel/preset-react prop-types babel-plugin-transform-react-remove-prop-types"
17
-
18
- say "Webpacker now supports react.js 🎉", :green
@@ -1,12 +0,0 @@
1
- say "Appending Stimulus setup code to #{Webpacker.config.source_entry_path}/application.js"
2
- append_to_file "#{Webpacker.config.source_entry_path}/application.js" do
3
- "\n" + open("#{__dir__}/examples/stimulus/application.js").read
4
- end
5
-
6
- say "Creating controllers directory"
7
- directory "#{__dir__}/examples/stimulus/controllers", "#{Webpacker.config.source_path}/controllers"
8
-
9
- say "Installing all Stimulus dependencies"
10
- run "yarn add stimulus"
11
-
12
- say "Webpacker now supports Stimulus.js 🎉", :green
@@ -1,29 +0,0 @@
1
- require "webpacker/configuration"
2
-
3
- say "Copying svelte loader to config/webpack/loaders"
4
- copy_file "#{__dir__}/loaders/svelte.js", Rails.root.join("config/webpack/loaders/svelte.js").to_s
5
-
6
- say "Adding svelte loader to config/webpack/environment.js"
7
- insert_into_file Rails.root.join("config/webpack/environment.js").to_s,
8
- "const svelte = require('./loaders/svelte')\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('svelte', svelte)\n",
13
- before: "module.exports"
14
-
15
- say "Copying Svelte example entry file to #{Webpacker.config.source_entry_path}"
16
- copy_file "#{__dir__}/examples/svelte/hello_svelte.js",
17
- "#{Webpacker.config.source_entry_path}/hello_svelte.js"
18
-
19
- say "Copying Svelte app file to #{Webpacker.config.source_path}"
20
- copy_file "#{__dir__}/examples/svelte/app.svelte",
21
- "#{Webpacker.config.source_path}/app.svelte"
22
-
23
- say "Installing all Svelte dependencies"
24
- run "yarn add svelte svelte-loader"
25
-
26
- say "Updating webpack paths to include .svelte file extension"
27
- insert_into_file Webpacker.config.config_path, "- .svelte\n".indent(4), after: /\s+extensions:\n/
28
-
29
- say "Webpacker now supports Svelte 🎉", :green