webpacker 5.4.4 → 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.
- checksums.yaml +4 -4
- data/.eslintrc.js +1 -1
- data/.github/workflows/ruby.yml +28 -4
- data/.gitignore +2 -0
- data/.node-version +1 -1
- data/.rubocop.yml +3 -111
- data/6_0_upgrade.md +43 -0
- data/CHANGELOG.md +19 -26
- data/Gemfile.lock +91 -94
- data/README.md +215 -98
- data/gemfiles/Gemfile-rails-edge +1 -1
- data/lib/install/config/webpack/base.js +3 -0
- data/lib/install/config/webpack/development.js +2 -2
- data/lib/install/config/webpack/production.js +2 -2
- data/lib/install/config/webpack/test.js +2 -2
- data/lib/install/config/webpacker.yml +8 -37
- data/lib/install/javascript/packs/application.css +9 -0
- data/lib/install/javascript/packs/application.js +3 -1
- data/lib/install/template.rb +33 -27
- data/lib/tasks/webpacker/binstubs.rake +6 -4
- data/lib/tasks/webpacker/check_binstubs.rake +4 -4
- data/lib/tasks/webpacker/check_yarn.rake +1 -1
- data/lib/tasks/webpacker/compile.rake +4 -2
- data/lib/tasks/webpacker/info.rake +12 -10
- data/lib/tasks/webpacker/install.rake +6 -4
- data/lib/tasks/webpacker/verify_install.rake +2 -1
- data/lib/tasks/webpacker/yarn_install.rake +9 -7
- data/lib/tasks/webpacker.rake +2 -11
- data/lib/webpacker/compiler.rb +15 -8
- data/lib/webpacker/configuration.rb +10 -45
- data/lib/webpacker/dev_server_runner.rb +21 -2
- data/lib/webpacker/env.rb +1 -5
- data/lib/webpacker/helper.rb +22 -32
- data/lib/webpacker/manifest.rb +1 -1
- data/lib/webpacker/version.rb +1 -1
- data/lib/webpacker/webpack_runner.rb +5 -0
- data/package/__tests__/config.js +5 -37
- data/package/__tests__/development.js +9 -11
- data/package/__tests__/env.js +12 -4
- data/package/__tests__/production.js +6 -6
- data/package/__tests__/staging.js +7 -6
- data/package/__tests__/test.js +4 -5
- data/package/babel/preset.js +55 -0
- data/package/config.js +3 -11
- data/package/env.js +8 -2
- data/package/environments/__tests__/base.js +15 -47
- data/package/environments/base.js +62 -125
- data/package/environments/development.js +45 -44
- data/package/environments/production.js +63 -68
- data/package/environments/test.js +2 -2
- data/package/index.js +13 -8
- data/package/rules/babel.js +9 -7
- data/package/rules/coffee.js +6 -0
- data/package/rules/erb.js +15 -0
- data/package/rules/file.js +19 -19
- data/package/rules/index.js +15 -18
- data/package/rules/less.js +22 -0
- data/package/rules/sass.js +10 -10
- data/package/rules/svg.js +20 -0
- data/package/utils/get_style_rule.js +26 -36
- data/package/utils/helpers.js +26 -35
- data/package.json +29 -45
- data/test/compiler_test.rb +0 -12
- data/test/configuration_test.rb +1 -32
- data/test/dev_server_runner_test.rb +24 -5
- data/test/engine_rake_tasks_test.rb +39 -0
- data/test/helper_test.rb +24 -30
- data/test/mounted_app/Rakefile +4 -0
- data/test/mounted_app/test/dummy/Rakefile +3 -0
- data/test/mounted_app/test/dummy/bin/rails +3 -0
- data/test/mounted_app/test/dummy/bin/rake +3 -0
- data/test/mounted_app/test/dummy/config/application.rb +10 -0
- data/test/mounted_app/test/dummy/config/environment.rb +3 -0
- data/test/mounted_app/test/dummy/config/webpacker.yml +75 -0
- data/test/mounted_app/test/dummy/config.ru +5 -0
- data/test/mounted_app/test/dummy/package.json +7 -0
- data/test/rake_tasks_test.rb +1 -10
- data/test/test_app/config/webpacker.yml +1 -25
- data/test/test_app/config/webpacker_public_root.yml +0 -1
- data/test/test_app/public/packs/manifest.json +17 -13
- data/test/test_app/some.config.js +0 -0
- data/test/webpack_runner_test.rb +9 -3
- data/yarn.lock +2505 -4943
- metadata +37 -82
- data/docs/assets.md +0 -119
- data/docs/cloud9.md +0 -310
- data/docs/css.md +0 -308
- data/docs/deployment.md +0 -130
- data/docs/docker.md +0 -68
- data/docs/engines.md +0 -213
- data/docs/env.md +0 -63
- data/docs/es6.md +0 -72
- data/docs/folder-structure.md +0 -66
- data/docs/integrations.md +0 -220
- data/docs/misc.md +0 -23
- data/docs/props.md +0 -223
- data/docs/target.md +0 -22
- data/docs/testing.md +0 -136
- data/docs/troubleshooting.md +0 -158
- data/docs/typescript.md +0 -190
- data/docs/v4-upgrade.md +0 -142
- data/docs/webpack-dev-server.md +0 -92
- data/docs/webpack.md +0 -364
- data/docs/yarn.md +0 -23
- data/lib/install/angular.rb +0 -23
- data/lib/install/coffee.rb +0 -25
- data/lib/install/config/.browserslistrc +0 -1
- data/lib/install/config/babel.config.js +0 -82
- data/lib/install/config/postcss.config.js +0 -12
- data/lib/install/config/webpack/environment.js +0 -3
- data/lib/install/elm.rb +0 -39
- data/lib/install/erb.rb +0 -25
- data/lib/install/examples/angular/hello_angular/app/app.component.ts +0 -9
- data/lib/install/examples/angular/hello_angular/app/app.module.ts +0 -16
- data/lib/install/examples/angular/hello_angular/index.ts +0 -8
- data/lib/install/examples/angular/hello_angular/polyfills.ts +0 -73
- data/lib/install/examples/angular/hello_angular.js +0 -7
- data/lib/install/examples/coffee/hello_coffee.coffee +0 -4
- data/lib/install/examples/elm/Main.elm +0 -55
- data/lib/install/examples/elm/hello_elm.js +0 -16
- data/lib/install/examples/erb/hello_erb.js.erb +0 -6
- data/lib/install/examples/react/babel.config.js +0 -99
- data/lib/install/examples/react/hello_react.jsx +0 -26
- data/lib/install/examples/react/tsconfig.json +0 -21
- data/lib/install/examples/stimulus/application.js +0 -1
- data/lib/install/examples/stimulus/controllers/hello_controller.js +0 -18
- data/lib/install/examples/stimulus/controllers/index.js +0 -9
- data/lib/install/examples/svelte/app.svelte +0 -11
- data/lib/install/examples/svelte/hello_svelte.js +0 -20
- data/lib/install/examples/typescript/hello_typescript.ts +0 -4
- data/lib/install/examples/typescript/tsconfig.json +0 -24
- data/lib/install/examples/vue/app.vue +0 -22
- data/lib/install/examples/vue/hello_vue.js +0 -72
- data/lib/install/loaders/coffee.js +0 -6
- data/lib/install/loaders/elm.js +0 -25
- data/lib/install/loaders/erb.js +0 -11
- data/lib/install/loaders/svelte.js +0 -9
- data/lib/install/loaders/vue.js +0 -6
- data/lib/install/react.rb +0 -18
- data/lib/install/stimulus.rb +0 -12
- data/lib/install/svelte.rb +0 -29
- data/lib/install/typescript.rb +0 -39
- data/lib/install/vue.rb +0 -49
- data/lib/tasks/installers.rake +0 -42
- data/package/config_types/__tests__/config_list.js +0 -118
- data/package/config_types/__tests__/config_object.js +0 -43
- data/package/config_types/config_list.js +0 -75
- data/package/config_types/config_object.js +0 -55
- data/package/config_types/index.js +0 -7
- data/package/rules/module.css.js +0 -3
- data/package/rules/module.sass.js +0 -8
- data/package/rules/node_modules.js +0 -22
- data/package/utils/__tests__/deep_assign.js +0 -32
- data/package/utils/__tests__/deep_merge.js +0 -10
- data/package/utils/__tests__/get_style_rule.js +0 -65
- data/package/utils/__tests__/objectify.js +0 -9
- data/package/utils/deep_assign.js +0 -22
- data/package/utils/deep_merge.js +0 -22
- data/package/utils/objectify.js +0 -3
|
@@ -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,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,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,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>
|
|
@@ -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
|
-
// })
|
data/lib/install/loaders/elm.js
DELETED
|
@@ -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
|
-
}
|
data/lib/install/loaders/erb.js
DELETED
data/lib/install/loaders/vue.js
DELETED
data/lib/install/react.rb
DELETED
|
@@ -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
|
data/lib/install/stimulus.rb
DELETED
|
@@ -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
|
data/lib/install/svelte.rb
DELETED
|
@@ -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
|