railman 1.0.4 → 1.0.5

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: cf99b72362996a494129c8feca23e009e1e13394
4
- data.tar.gz: 26fc41bb5d5438fc5182ee9f7b642eabb720c743
3
+ metadata.gz: f1b369eaae42521b0f84e788e40862c33e4af5c7
4
+ data.tar.gz: dddb1994d58f91ce9da519eee22bbbf9434d8804
5
5
  SHA512:
6
- metadata.gz: 11a4676a4e52562ea77e37a925f545e40bd63b06ec383495da926379c6d55782cb80ac968f43341ea340d3b8b0161efbe1edf86b4e399c0400b5831b2f1d23c4
7
- data.tar.gz: 6da0be1cadb3b59b28fe36bc5bddc2cfd0e1d0c03768fa10a06aba4eece536c87308fa265691be6ad223e467615d8bde39e015fc34b394a2c9916317f7293c00
6
+ metadata.gz: 30c988789cd1ac1f169366f64f2216ea750de45b29947c3955328e0e6f03d3f215997cee9bba7e789d50b5ebe946b8b4468ddf3814e931c4e537f4e2c1430746
7
+ data.tar.gz: f496c771a8fa55e5c98642fbdde2442ee243872658a2cccdbb29a7b7c368d5c4ebc47c1939be935bab1576a27c5ac2cd13fe53320de52024cabbede2243ee45e
@@ -1,3 +1,3 @@
1
1
  module Railman
2
- VERSION = '1.0.4'
2
+ VERSION = '1.0.5'
3
3
  end
@@ -8,12 +8,12 @@ end
8
8
 
9
9
  gem 'dotenv-rails', '2.2.1', require: 'dotenv/rails-now' # load ENV from .env
10
10
 
11
- gem 'rails', '~> 5.1.0'
11
+ gem 'rails', '5.1.3'
12
12
  gem 'pg', '0.18.2'
13
13
 
14
14
  gem 'railman-ui' # bulma css framework + rails helpers
15
15
 
16
- gem 'webpacker', '1.2'
16
+ gem 'webpacker', '2.0'
17
17
 
18
18
  # Turbolinks makes navigating your web application faster. Read more: https://github.com/turbolinks/turbolinks
19
19
  # gem 'turbolinks', '~> 5'
@@ -1,19 +1,15 @@
1
1
  /* eslint no-console: 0 */
2
- // Run this example by adding <%= javascript_pack_tag 'hello_vue' %>
3
- // to the head of your layout file,
2
+ // Run this example by adding <%= javascript_pack_tag 'hello_vue' %> and
3
+ // <%= stylesheet_pack_tag 'hello_vue' %> to the head of your layout file,
4
4
  // like app/views/layouts/application.html.erb.
5
5
  // All it does is render <div>Hello Vue</div> at the bottom of the page.
6
6
 
7
- import Vue from 'vue/dist/vue.esm'
7
+ import Vue from 'vue'
8
8
  import App from './app.vue'
9
9
 
10
10
  document.addEventListener('DOMContentLoaded', () => {
11
11
  document.body.appendChild(document.createElement('hello'))
12
- const app = new Vue({
13
- el: 'hello',
14
- template: '<App/>',
15
- components: { App }
16
- })
12
+ const app = new Vue(App).$mount('hello')
17
13
 
18
14
  console.log(app)
19
15
  })
@@ -5,29 +5,24 @@ require "shellwords"
5
5
  require "yaml"
6
6
 
7
7
  ENV["RAILS_ENV"] ||= "development"
8
- RAILS_ENV = ENV["RAILS_ENV"]
8
+ RAILS_ENV = ENV["RAILS_ENV"]
9
9
 
10
10
  ENV["NODE_ENV"] ||= RAILS_ENV
11
- NODE_ENV = ENV["NODE_ENV"]
11
+ NODE_ENV = ENV["NODE_ENV"]
12
12
 
13
- APP_PATH = File.expand_path("../", __dir__)
14
- CONFIG_PATH = File.join(APP_PATH, "config/webpack/paths.yml")
13
+ APP_PATH = File.expand_path("../", __dir__)
14
+ NODE_MODULES_PATH = File.join(APP_PATH, "node_modules")
15
+ WEBPACK_CONFIG = File.join(APP_PATH, "config/webpack/#{NODE_ENV}.js")
15
16
 
16
- begin
17
- paths = YAML.load(File.read(CONFIG_PATH))[NODE_ENV]
18
-
19
- NODE_MODULES_PATH = File.join(APP_PATH.shellescape, paths["node_modules"])
20
- WEBPACK_CONFIG_PATH = File.join(APP_PATH.shellescape, paths["config"])
21
- rescue Errno::ENOENT, NoMethodError
22
- puts "Configuration not found in config/webpack/paths.yml"
17
+ unless File.exist?(WEBPACK_CONFIG)
18
+ puts "Webpack configuration not found."
23
19
  puts "Please run bundle exec rails webpacker:install to install webpacker"
24
20
  exit!
25
21
  end
26
22
 
27
- WEBPACK_BIN = "#{NODE_MODULES_PATH}/.bin/webpack"
28
- WEBPACK_CONFIG = "#{WEBPACK_CONFIG_PATH}/#{NODE_ENV}.js"
23
+ newenv = { "NODE_PATH" => NODE_MODULES_PATH.shellescape }
24
+ cmdline = ["yarn", "run", "webpack", "--", "--config", WEBPACK_CONFIG] + ARGV
29
25
 
30
26
  Dir.chdir(APP_PATH) do
31
- exec "NODE_PATH=#{NODE_MODULES_PATH} #{WEBPACK_BIN} --config #{WEBPACK_CONFIG}" \
32
- " #{ARGV.join(" ")}"
27
+ exec newenv, *cmdline
33
28
  end
@@ -10,24 +10,34 @@ RAILS_ENV = ENV["RAILS_ENV"]
10
10
  ENV["NODE_ENV"] ||= RAILS_ENV
11
11
  NODE_ENV = ENV["NODE_ENV"]
12
12
 
13
- APP_PATH = File.expand_path("../", __dir__)
14
- CONFIG_PATH = File.join(APP_PATH, "config/webpack/paths.yml")
13
+ APP_PATH = File.expand_path("../", __dir__)
14
+ CONFIG_FILE = File.join(APP_PATH, "config/webpacker.yml")
15
+ NODE_MODULES_PATH = File.join(APP_PATH, "node_modules")
16
+ WEBPACK_CONFIG = File.join(APP_PATH, "config/webpack/development.js")
17
+
18
+ def args(key)
19
+ index = ARGV.index(key)
20
+ index ? ARGV[index + 1] : nil
21
+ end
15
22
 
16
23
  begin
17
- paths = YAML.load(File.read(CONFIG_PATH))[NODE_ENV]
24
+ dev_server = YAML.load_file(CONFIG_FILE)["development"]["dev_server"]
18
25
 
19
- NODE_MODULES_PATH = File.join(APP_PATH.shellescape, paths["node_modules"])
20
- WEBPACK_CONFIG_PATH = File.join(APP_PATH.shellescape, paths["config"])
26
+ DEV_SERVER_HOST = "http#{"s" if args('--https') || dev_server["https"]}://#{args('--host') || dev_server["host"]}:#{args('--port') || dev_server["port"]}"
21
27
 
22
- WEBPACK_BIN = "#{NODE_MODULES_PATH}/.bin/webpack-dev-server"
23
- DEV_SERVER_CONFIG = "#{WEBPACK_CONFIG_PATH}/development.server.js"
24
28
  rescue Errno::ENOENT, NoMethodError
25
- puts "Configuration not found in config/webpacker/paths.yml."
29
+ puts "Webpack dev_server configuration not found in #{CONFIG_FILE}."
26
30
  puts "Please run bundle exec rails webpacker:install to install webpacker"
27
31
  exit!
28
32
  end
29
33
 
34
+ newenv = {
35
+ "NODE_PATH" => NODE_MODULES_PATH.shellescape,
36
+ "ASSET_HOST" => DEV_SERVER_HOST.shellescape
37
+ }.freeze
38
+
39
+ cmdline = ["yarn", "run", "webpack-dev-server", "--", "--progress", "--color", "--config", WEBPACK_CONFIG] + ARGV
40
+
30
41
  Dir.chdir(APP_PATH) do
31
- exec "NODE_PATH=#{NODE_MODULES_PATH} #{WEBPACK_BIN} --progress --color " \
32
- "--config #{DEV_SERVER_CONFIG} #{ARGV.join(" ")}"
42
+ exec newenv, *cmdline
33
43
  end
@@ -1,26 +1,35 @@
1
- // Common configuration for webpacker loaded from config/webpack/paths.yml
1
+ // Common configuration for webpacker loaded from config/webpacker.yml
2
2
 
3
3
  const { join, resolve } = require('path')
4
4
  const { env } = require('process')
5
5
  const { safeLoad } = require('js-yaml')
6
6
  const { readFileSync } = require('fs')
7
7
 
8
- const configPath = resolve('config', 'webpack')
8
+ const configPath = resolve('config', 'webpacker.yml')
9
9
  const loadersDir = join(__dirname, 'loaders')
10
- const paths = safeLoad(readFileSync(join(configPath, 'paths.yml'), 'utf8'))[env.NODE_ENV]
11
- const devServer = safeLoad(readFileSync(join(configPath, 'development.server.yml'), 'utf8'))[env.NODE_ENV]
10
+ const settings = safeLoad(readFileSync(configPath), 'utf8')[env.NODE_ENV]
12
11
 
13
- // Compute public path based on environment and ASSET_HOST in production
14
- const ifHasCDN = env.ASSET_HOST !== undefined && env.NODE_ENV === 'production'
15
- const devServerUrl = `http://${devServer.host}:${devServer.port}/${paths.entry}/`
16
- const publicUrl = ifHasCDN ? `${env.ASSET_HOST}/${paths.entry}/` : `/${paths.entry}/`
17
- const publicPath = env.NODE_ENV !== 'production' ? devServerUrl : publicUrl
12
+ function removeOuterSlashes(string) {
13
+ return string.replace(/^\/*/, '').replace(/\/*$/, '')
14
+ }
15
+
16
+ function formatPublicPath(host = '', path = '') {
17
+ let formattedHost = removeOuterSlashes(host)
18
+ if (formattedHost && !/^http/i.test(formattedHost)) {
19
+ formattedHost = `//${formattedHost}`
20
+ }
21
+ const formattedPath = removeOuterSlashes(path)
22
+ return `${formattedHost}/${formattedPath}/`
23
+ }
24
+
25
+ const output = {
26
+ path: resolve('public', settings.public_output_path),
27
+ publicPath: formatPublicPath(env.ASSET_HOST, settings.public_output_path)
28
+ }
18
29
 
19
30
  module.exports = {
20
- devServer,
31
+ settings,
21
32
  env,
22
- paths,
23
33
  loadersDir,
24
- publicUrl,
25
- publicPath
34
+ output
26
35
  }
@@ -2,9 +2,10 @@
2
2
 
3
3
  const merge = require('webpack-merge')
4
4
  const sharedConfig = require('./shared.js')
5
+ const { settings, output } = require('./configuration.js')
5
6
 
6
7
  module.exports = merge(sharedConfig, {
7
- devtool: 'sourcemap',
8
+ devtool: 'cheap-eval-source-map',
8
9
 
9
10
  stats: {
10
11
  errorDetails: true
@@ -12,5 +13,20 @@ module.exports = merge(sharedConfig, {
12
13
 
13
14
  output: {
14
15
  pathinfo: true
16
+ },
17
+
18
+ devServer: {
19
+ clientLogLevel: 'none',
20
+ https: settings.dev_server.https,
21
+ host: settings.dev_server.host,
22
+ port: settings.dev_server.port,
23
+ contentBase: output.path,
24
+ publicPath: output.publicPath,
25
+ compress: true,
26
+ headers: { 'Access-Control-Allow-Origin': '*' },
27
+ historyApiFallback: true,
28
+ watchOptions: {
29
+ ignored: /node_modules/
30
+ }
15
31
  }
16
32
  })
@@ -7,8 +7,9 @@ module.exports = {
7
7
  fallback: 'style-loader',
8
8
  use: [
9
9
  { loader: 'css-loader', options: { minimize: env.NODE_ENV === 'production' } },
10
- 'postcss-loader',
11
- 'sass-loader'
10
+ { loader: 'postcss-loader', options: { sourceMap: true } },
11
+ 'resolve-url-loader',
12
+ { loader: 'sass-loader', options: { sourceMap: true } }
12
13
  ]
13
14
  })
14
15
  }
@@ -2,6 +2,7 @@ module.exports = {
2
2
  test: /.vue$/,
3
3
  loader: 'vue-loader',
4
4
  options: {
5
+ extractCSS: true,
5
6
  loaders: {
6
7
  js: 'babel-loader',
7
8
  file: 'file-loader',
@@ -9,13 +9,27 @@ const sharedConfig = require('./shared.js')
9
9
 
10
10
  module.exports = merge(sharedConfig, {
11
11
  output: { filename: '[name]-[chunkhash].js' },
12
+ devtool: 'source-map',
13
+ stats: 'normal',
12
14
 
13
15
  plugins: [
14
- new webpack.optimize.UglifyJsPlugin(),
16
+ new webpack.optimize.UglifyJsPlugin({
17
+ minimize: true,
18
+ sourceMap: true,
19
+
20
+ compress: {
21
+ warnings: false
22
+ },
23
+
24
+ output: {
25
+ comments: false
26
+ }
27
+ }),
28
+
15
29
  new CompressionPlugin({
16
30
  asset: '[path].gz[query]',
17
31
  algorithm: 'gzip',
18
- test: /\.(js|css|svg|eot|ttf|woff|woff2)$/
32
+ test: /\.(js|css|html|json|ico|svg|eot|otf|ttf)$/
19
33
  })
20
34
  ]
21
35
  })
@@ -9,16 +9,17 @@ const { sync } = require('glob')
9
9
  const ExtractTextPlugin = require('extract-text-webpack-plugin')
10
10
  const ManifestPlugin = require('webpack-manifest-plugin')
11
11
  const extname = require('path-complete-extname')
12
- const { env, paths, publicPath, loadersDir } = require('./configuration.js')
12
+ const { env, settings, output, loadersDir } = require('./configuration.js')
13
13
 
14
- const extensionGlob = `**/*{${paths.extensions.join(',')}}*`
15
- const packPaths = sync(join(paths.source, paths.entry, extensionGlob))
14
+ const extensionGlob = `**/*{${settings.extensions.join(',')}}*`
15
+ const entryPath = join(settings.source_path, settings.source_entry_path)
16
+ const packPaths = sync(join(entryPath, extensionGlob))
16
17
 
17
18
  module.exports = {
18
19
  entry: packPaths.reduce(
19
20
  (map, entry) => {
20
21
  const localMap = map
21
- const namespace = relative(join(paths.source, paths.entry), dirname(entry))
22
+ const namespace = relative(join(entryPath), dirname(entry))
22
23
  localMap[join(namespace, basename(entry, extname(entry)))] = resolve(entry)
23
24
  return localMap
24
25
  }, {}
@@ -26,8 +27,8 @@ module.exports = {
26
27
 
27
28
  output: {
28
29
  filename: '[name].js',
29
- path: resolve(paths.output, paths.entry),
30
- publicPath
30
+ path: output.path,
31
+ publicPath: output.publicPath
31
32
  },
32
33
 
33
34
  module: {
@@ -37,18 +38,21 @@ module.exports = {
37
38
  plugins: [
38
39
  new webpack.EnvironmentPlugin(JSON.parse(JSON.stringify(env))),
39
40
  new ExtractTextPlugin(env.NODE_ENV === 'production' ? '[name]-[hash].css' : '[name].css'),
40
- new ManifestPlugin({ fileName: paths.manifest, publicPath, writeToFileEmit: true })
41
+ new ManifestPlugin({
42
+ publicPath: output.publicPath,
43
+ writeToFileEmit: true
44
+ })
41
45
  ],
42
46
 
43
47
  resolve: {
44
- extensions: paths.extensions,
48
+ extensions: settings.extensions,
45
49
  modules: [
46
- resolve(paths.source),
47
- resolve(paths.node_modules)
50
+ resolve(settings.source_path),
51
+ 'node_modules'
48
52
  ]
49
53
  },
50
54
 
51
55
  resolveLoader: {
52
- modules: [paths.node_modules]
56
+ modules: ['node_modules']
53
57
  }
54
58
  }
@@ -1,14 +1,13 @@
1
1
  # Note: You must restart bin/webpack-dev-server for changes to take effect
2
2
 
3
3
  default: &default
4
- config: config/webpack
5
- entry: packs
6
- output: public
7
- manifest: manifest.json
8
- node_modules: node_modules
9
- source: app/javascript
4
+ source_path: app/javascript
5
+ source_entry_path: packs
6
+ public_output_path: packs
7
+
10
8
  extensions:
11
9
  - .coffee
10
+ - .erb
12
11
  - .js
13
12
  - .jsx
14
13
  - .ts
@@ -25,9 +24,15 @@ default: &default
25
24
  development:
26
25
  <<: *default
27
26
 
27
+ dev_server:
28
+ host: 0.0.0.0
29
+ port: 8080
30
+ https: false
31
+
28
32
  test:
29
33
  <<: *default
30
- manifest: manifest-test.json
34
+
35
+ public_output_path: packs-test
31
36
 
32
37
  production:
33
38
  <<: *default
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: railman
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.4
4
+ version: 1.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Igor Jancev
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-05-10 00:00:00.000000000 Z
11
+ date: 2017-08-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -222,18 +222,16 @@ files:
222
222
  - templates/rails_app/config/sidekiq.yml
223
223
  - templates/rails_app/config/webpack/configuration.js
224
224
  - templates/rails_app/config/webpack/development.js
225
- - templates/rails_app/config/webpack/development.server.js
226
- - templates/rails_app/config/webpack/development.server.yml
227
225
  - templates/rails_app/config/webpack/loaders/assets.js
228
226
  - templates/rails_app/config/webpack/loaders/babel.js
229
227
  - templates/rails_app/config/webpack/loaders/coffee.js
230
228
  - templates/rails_app/config/webpack/loaders/erb.js
231
229
  - templates/rails_app/config/webpack/loaders/sass.js
232
230
  - templates/rails_app/config/webpack/loaders/vue.js
233
- - templates/rails_app/config/webpack/paths.yml
234
231
  - templates/rails_app/config/webpack/production.js
235
232
  - templates/rails_app/config/webpack/shared.js
236
233
  - templates/rails_app/config/webpack/test.js
234
+ - templates/rails_app/config/webpacker.yml
237
235
  - templates/rails_app/db/seeds.rb
238
236
  - templates/rails_app/jenkins/all_tests.sh
239
237
  - templates/rails_app/jenkins/brakeman.sh
@@ -1,17 +0,0 @@
1
- // Note: You must restart bin/webpack-dev-server for changes to take effect
2
-
3
- const { resolve } = require('path')
4
- const merge = require('webpack-merge')
5
- const devConfig = require('./development.js')
6
- const { devServer, publicPath, paths } = require('./configuration.js')
7
-
8
- module.exports = merge(devConfig, {
9
- devServer: {
10
- host: devServer.host,
11
- port: devServer.port,
12
- compress: true,
13
- historyApiFallback: true,
14
- contentBase: resolve(paths.output, paths.entry),
15
- publicPath
16
- }
17
- })
@@ -1,17 +0,0 @@
1
- # Note: You must restart bin/webpack-dev-server for changes to take effect
2
-
3
- default: &default
4
- enabled: true
5
- host: localhost
6
- port: 8080
7
-
8
- development:
9
- <<: *default
10
-
11
- test:
12
- <<: *default
13
- enabled: false
14
-
15
- production:
16
- <<: *default
17
- enabled: false