vue_cli-rails 0.4.1 → 0.5.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +19 -16
- data/CHANGELOG.md +7 -1
- data/Gemfile.lock +1 -1
- data/README.md +38 -5
- data/lib/helpers/lib/common.rb +8 -0
- data/lib/helpers/scripts/vue_create.rb +2 -2
- data/lib/source/vue.rails.js +4 -3
- data/lib/source/vue.yml +9 -0
- data/lib/tasks/vue.rake +9 -1
- data/lib/vue_cli/rails/configuration.rb +4 -3
- data/lib/vue_cli/rails/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3d726378bf9cb84c5bb46d6c02f3945cd314723fd213b8b2c4d42a35c7942a2d
|
4
|
+
data.tar.gz: fb10a980c2ea4a44fb09361c900519600257223d9eb80ed959a76cedf35fcbf1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 58cf9af965c358d6cf0fbfda8023a9a44027048c00569e3bb60c07635932543f52f5850597219a19d3e3fbb9a1a95ebd1d68a540db455e03ae6f2199d06fc044
|
7
|
+
data.tar.gz: '01229ed4a7c5be6aa2da098c397570518f8ba256a2d36caeac8ae9400f03616f1f159e86e33988a7d72a533599b868408b44ec9aa4bb598b36ec4d472463d22c'
|
data/.travis.yml
CHANGED
@@ -5,19 +5,24 @@ cache:
|
|
5
5
|
bundler: true
|
6
6
|
yarn: true
|
7
7
|
|
8
|
-
rvm:
|
9
|
-
- 2.3
|
10
|
-
- 2.4
|
11
|
-
- 2.5
|
12
|
-
|
13
|
-
env:
|
14
|
-
- RAILS_VERSION=4.2
|
15
|
-
- RAILS_VERSION=5.2
|
16
|
-
|
17
8
|
matrix:
|
18
|
-
|
9
|
+
allow_failures:
|
10
|
+
- env: RAILS_VERSION=pre
|
11
|
+
include:
|
12
|
+
- rvm: 2.3
|
13
|
+
env: RAILS_VERSION=4.2 PACKAGE_MANAGER=npm
|
14
|
+
- rvm: 2.3
|
15
|
+
env: RAILS_VERSION=5.2 PACKAGE_MANAGER=yarn
|
16
|
+
- rvm: 2.4
|
17
|
+
env: RAILS_VERSION=5.2 PACKAGE_MANAGER=npm
|
18
|
+
- rvm: 2.5
|
19
|
+
env: RAILS_VERSION=5.2 PACKAGE_MANAGER=yarn
|
20
|
+
- rvm: 2.6
|
21
|
+
env: RAILS_VERSION=5.2 PACKAGE_MANAGER=npm
|
19
22
|
- rvm: 2.5
|
20
|
-
env: RAILS_VERSION=
|
23
|
+
env: RAILS_VERSION=pre PACKAGE_MANAGER=npm
|
24
|
+
- rvm: 2.6
|
25
|
+
env: RAILS_VERSION=pre PACKAGE_MANAGER=yarn
|
21
26
|
|
22
27
|
gemfile:
|
23
28
|
- test/Gemfile-rails.$RAILS_VERSION
|
@@ -28,19 +33,17 @@ before_install:
|
|
28
33
|
install:
|
29
34
|
- nvm install --lts
|
30
35
|
- node -v
|
31
|
-
- yarn global add @vue/cli
|
32
36
|
- gem install rspec
|
33
37
|
|
34
|
-
before_script:
|
35
|
-
- sh -c 'cd test && ./install.rb'
|
36
|
-
|
37
38
|
script:
|
38
|
-
- sh -c 'cd test &&
|
39
|
+
- sh -c 'cd test && ./install.rb'
|
40
|
+
- sh -c 'cd test && rspec ./vcr_specs.rb'
|
39
41
|
|
40
42
|
jobs:
|
41
43
|
include:
|
42
44
|
- stage: gem release
|
43
45
|
rvm: 2.3
|
46
|
+
env: RAILS_VERSION=4.2 PACKAGE_MANAGER=yarn
|
44
47
|
script: echo "Deploying to rubygems.org ..."
|
45
48
|
deploy:
|
46
49
|
provider: rubygems
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,12 @@
|
|
1
1
|
# Change Log
|
2
2
|
|
3
|
+
## [0.5.0] - Released on 2019-03-23
|
4
|
+
|
5
|
+
- Added option `entry_path` to simplify migration from `Webpacker`
|
6
|
+
- Added instructions for migration from `Webpacker`
|
7
|
+
- Added task `vue:inspect`
|
8
|
+
- Fixed ignoring `RAILS_ENV` for `rake vue:compile`
|
9
|
+
|
3
10
|
## [0.4.1] - Released on 2019-03-18
|
4
11
|
|
5
12
|
- Better hint than crashing when run Rails server with `vue_cli-rails` but `rake vue:create` have not been called
|
@@ -37,4 +44,3 @@
|
|
37
44
|
## [0.1.2] - Released on 2019-02-24
|
38
45
|
|
39
46
|
- First release.
|
40
|
-
|
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -4,6 +4,8 @@
|
|
4
4
|
|
5
5
|
Let's make cool boy Vue even cooler on Rails!
|
6
6
|
|
7
|
+
[Change Log](./CHANGELOG.md)
|
8
|
+
|
7
9
|
## Installation
|
8
10
|
|
9
11
|
Add this line to your Rails application's `Gemfile`:
|
@@ -42,14 +44,15 @@ And then execute:
|
|
42
44
|
|
43
45
|
Out-of-box workflow:
|
44
46
|
|
45
|
-
1. `
|
47
|
+
1. Make sure you already installed `@vue/cli` globally via `npm` (`npm i -g @vue/cli`) or `yarn` (`yarn global add @vue/cli`)
|
48
|
+
2. `bundle exec rake vue:create` and follow the steps.
|
46
49
|
|
47
50
|
> Don NOT select `In package.json` for "Where do you prefer placing config for Babel, PostCSS, ESLint, etc.?". Some functionalities like alias of jest may not work.
|
48
51
|
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
52
|
+
3. Put your JavaScript files under `app/assets/vue/entry_points`.
|
53
|
+
4. Insert your entry point by `vue_entry 'entry_point'` in views or `render vue: 'entry_point'` in controllers.
|
54
|
+
5. `webpack-dev-server` auto starts alongside `rails server` in dev mode.
|
55
|
+
6. Invoke `env RAILS_ENV=production bundle exec rake vue:compile` to compile assets (you still must manually set `RAILS_ENV` to `production`).
|
53
56
|
|
54
57
|
> More settings are available in `config/vue.yml`
|
55
58
|
|
@@ -279,8 +282,38 @@ Feel free to update `vue.config.js` by yourself. There are some lines of boiler-
|
|
279
282
|
}
|
280
283
|
```
|
281
284
|
|
285
|
+
- `vue:inspect`
|
286
|
+
|
287
|
+
Alias of `vue inspect`, `npx vue-cli-service inspect` or `yarn exec vue-cli-service inspect`. Display the webpack configuration file.
|
288
|
+
|
282
289
|
> You may need to invoke `rake` with `bundle exec`. Rails 5 and above supports new `rails rake:task` flavor.
|
283
290
|
|
291
|
+
## Migrate from Webpacker
|
292
|
+
|
293
|
+
It's very easy to migrate from Webpacker.
|
294
|
+
|
295
|
+
1. Install this gem and `bundle install`
|
296
|
+
2. Install `@vue/cli` globally then follow the instructions of `rake vue:create`;
|
297
|
+
3. Edit `config/vue.yml`, set `default/entry_path` to `source_path` (by default `app/javascript`) joins `source_entry_path` (by default `packs`);
|
298
|
+
4. Change all `javascript_packs_with_chunks_tag` to `vue_entry`;
|
299
|
+
5. Fix all nonsense `xxxx_packs_tag`;
|
300
|
+
6. If you mind `public_output_path` and `manifest_output` you can change them to follow Webpacker values;
|
301
|
+
> I strongly not recommend to put `manifest_output.json` under `public` folder;
|
302
|
+
7. Update `vue.config.js` if you have any customized webpack configurations;
|
303
|
+
> You can inspect how webpack settings at anytime
|
304
|
+
8. Directly `rails s` to start dev server;
|
305
|
+
> You can get rid of `bin/webpack-dev-server` and `bin/webpack` now. However, still recommend `rake vue:node_dev` and run `yarn dev` so it will kill `webpack-dev-server` properly when your Rails dev server stopped.
|
306
|
+
9. Call `env RAILS_ENV=production rake vue:compile[with_rails_assets]` instead of `env RAILS_ENV=production rake assets:precompile` to compile all assets for production.
|
307
|
+
10. Delete unused Webpacker files
|
308
|
+
- `bin/webpack-dev-server`
|
309
|
+
- `bin/webpack`
|
310
|
+
- `config/webpack`
|
311
|
+
- `config/webpacker.yml`
|
312
|
+
|
313
|
+
> Strongly recommend to backup your codebase before the migration.
|
314
|
+
|
315
|
+
Enjoy Hot Module Replacement now!
|
316
|
+
|
284
317
|
## Valid Vue CLI config Options
|
285
318
|
|
286
319
|
You can check the full list on [Vue CLI official website](https://cli.vuejs.org/config/).
|
data/lib/helpers/lib/common.rb
CHANGED
@@ -74,7 +74,7 @@ class VueCreate
|
|
74
74
|
if @pack.exist?
|
75
75
|
puts 'Detected `package.json`!'
|
76
76
|
pack_input = @input.gets(
|
77
|
-
' Do you want
|
77
|
+
' Do you want vue-cli to overwrite your package.json',
|
78
78
|
'yAks',
|
79
79
|
a: 'Auto', k: 'Keep', s: 'Skip vue create',
|
80
80
|
)
|
@@ -86,7 +86,7 @@ class VueCreate
|
|
86
86
|
if gi.exist?
|
87
87
|
puts 'Detected `.gitignore`!'
|
88
88
|
gi_input = @input.gets(
|
89
|
-
' Do you want
|
89
|
+
' Do you want vue-cli to overwrite your .gitignore',
|
90
90
|
'yMk',
|
91
91
|
m: 'Merge', k: 'Keep',
|
92
92
|
)
|
data/lib/source/vue.rails.js
CHANGED
@@ -57,6 +57,8 @@ module.exports = (() => {
|
|
57
57
|
const root = resolve(__dirname);
|
58
58
|
const pop = (config.public_output_path || 'vue_assets').replace(/(^\/+|\/+$)/g, '');
|
59
59
|
const {
|
60
|
+
entry_path: ep = '',
|
61
|
+
entryPath = resolve(root, ep.trim() || 'app/assets/vue/entry_points'),
|
60
62
|
manifest_output: manifestOutput,
|
61
63
|
js_output: output,
|
62
64
|
alias = {},
|
@@ -78,7 +80,6 @@ module.exports = (() => {
|
|
78
80
|
devServer.contentBase = resolve(root, devServer.contentBase);
|
79
81
|
}
|
80
82
|
const entry = {};
|
81
|
-
const assetRoot = resolve(root, 'app/assets/vue/entry_points');
|
82
83
|
const findAllJsFiles = (path) => {
|
83
84
|
readdirSync(path).forEach((fn) => {
|
84
85
|
const filename = resolve(path, fn);
|
@@ -86,13 +87,13 @@ module.exports = (() => {
|
|
86
87
|
if (stat.isDirectory()) {
|
87
88
|
findAllJsFiles(filename);
|
88
89
|
} else if (stat.isFile() && fn.endsWith('.js')) {
|
89
|
-
entry[filename.slice(
|
90
|
+
entry[filename.slice(entryPath.length + 1, -3)] = filename;
|
90
91
|
}
|
91
92
|
});
|
92
93
|
};
|
93
94
|
|
94
95
|
try {
|
95
|
-
findAllJsFiles(
|
96
|
+
findAllJsFiles(entryPath);
|
96
97
|
} catch (_e) {
|
97
98
|
//
|
98
99
|
}
|
data/lib/source/vue.yml
CHANGED
@@ -1,6 +1,14 @@
|
|
1
1
|
default: &default
|
2
2
|
package_manager: ${PACKAGE_MANAGER}
|
3
|
+
|
4
|
+
# entry_path: app/assets/vue/entry_points
|
5
|
+
# # Migrate from Webpacker:
|
6
|
+
# entry_path: app/javascript/packs
|
7
|
+
|
3
8
|
public_output_path: vue_assets
|
9
|
+
# # Migrate from Webpacker:
|
10
|
+
# public_output_path: packs
|
11
|
+
|
4
12
|
# js_output:
|
5
13
|
# filename: 'js/[name].[hash:8].js'
|
6
14
|
# chunkFilename: 'js/[name].[hash:8].js'
|
@@ -20,6 +28,7 @@ development:
|
|
20
28
|
production:
|
21
29
|
<<: *default
|
22
30
|
manifest_output: app/assets/vue/manifest.json
|
31
|
+
# Webpacker manifest_output (public/packs/manifest.json) is not suggested
|
23
32
|
productionSourceMap: false
|
24
33
|
css:
|
25
34
|
extract: true
|
data/lib/tasks/vue.rake
CHANGED
@@ -25,7 +25,8 @@ namespace :vue do
|
|
25
25
|
desc 'Build assets: set [with_rails_assets] to invoke assets:precompile as well'
|
26
26
|
task :compile, [:with_rails_assets] => :environment do |_t, args|
|
27
27
|
pm = VueCli::Rails::Configuration.instance.node_env
|
28
|
-
|
28
|
+
env = { 'RAILS_ENV' => ENV['RAILS_ENV'].presence || ::Rails.env }
|
29
|
+
pm.exec('vue-cli-service build', env: env)
|
29
30
|
::Rake::Task['assets:precompile'].invoke if args.with_rails_assets
|
30
31
|
end
|
31
32
|
|
@@ -48,4 +49,11 @@ namespace :vue do
|
|
48
49
|
require_relative '../helpers/scripts/vue_command'
|
49
50
|
VueCommand.new.install_node_dev
|
50
51
|
end
|
52
|
+
|
53
|
+
desc 'Inspect webpack settings' do
|
54
|
+
task inspect: :environment do
|
55
|
+
pm = VueCli::Rails::Configuration.instance.node_env
|
56
|
+
env = { 'RAILS_ENV' => ENV['RAILS_ENV'].presence || ::Rails.env }
|
57
|
+
pm.exec('vue-cli-service inspect', env: env)
|
58
|
+
end
|
51
59
|
end
|
@@ -30,9 +30,10 @@ module VueCli
|
|
30
30
|
|
31
31
|
def load_config(config)
|
32
32
|
config = config[::Rails.env]
|
33
|
+
entry_path = config['entry_path'].presence || 'app/assets/vue/entry_points'
|
33
34
|
c = {
|
34
35
|
'configureWebpack' => {
|
35
|
-
'entry' => entry,
|
36
|
+
'entry' => entry(entry_path),
|
36
37
|
'resolve' => {},
|
37
38
|
},
|
38
39
|
}
|
@@ -137,8 +138,8 @@ module VueCli
|
|
137
138
|
@root.join(*path).to_s
|
138
139
|
end
|
139
140
|
|
140
|
-
def entry
|
141
|
-
base_dir = @root.join(
|
141
|
+
def entry(entry_path)
|
142
|
+
base_dir = @root.join(entry_path)
|
142
143
|
start = base_dir.to_s.size + 1
|
143
144
|
Dir[base_dir.join('**/*.js')].each_with_object({}) do |filename, h|
|
144
145
|
h[filename[start...-3]] = filename
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: vue_cli-rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- James Chen
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-03-
|
11
|
+
date: 2019-03-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|