simpacker 1.0.0 → 1.1.0
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/CHANGELOG.md +9 -0
- data/README.md +6 -2
- data/lib/install/javascript/{application.ts → application.js} +0 -0
- data/lib/install/javascript/greeter.js +3 -0
- data/lib/install/root/webpack.config.js +2 -13
- data/lib/install/template.rb +0 -3
- data/lib/simpacker/configuration.rb +5 -30
- data/lib/simpacker/context.rb +26 -3
- data/lib/simpacker/manifest.rb +14 -13
- data/lib/simpacker/version.rb +1 -1
- metadata +5 -5
- data/lib/install/javascript/greeter.ts +0 -3
- data/lib/install/root/tsconfig.json +0 -18
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 91a0259d16d447c35740fe2261d8666a3f014da6e469c64cae1922465351c05f
|
4
|
+
data.tar.gz: f16ac990f0e689751069256b909afa54e41688638bfbefd5cd409b1ed6dddab9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7f41ace4633df97ef72573dd524b3b47f9d9784b0f81db0ec19d76c5c21c4e86ae6ac0dbce60b36043fa6d346187fe6ccadd9216e5168150f603c501025db69a
|
7
|
+
data.tar.gz: 321c5eb359a553499b29272ee2067ae8ff663bf46e4171480435b65630342803c7fec06483bbaed556a610bb969efc42e9b203b7fbaa695fa96c3c542ec03a95
|
data/CHANGELOG.md
ADDED
data/README.md
CHANGED
@@ -41,9 +41,11 @@ $ ./node_modules/.bin/wabpack --watch
|
|
41
41
|
- Webpack settings
|
42
42
|
- [webpack-dev-server](https://github.com/hokaccha/simpacker/tree/master/example/webpack-dev-server)
|
43
43
|
- [Multiple Entry Point](https://github.com/hokaccha/simpacker/tree/master/example/multiple-entry-points)
|
44
|
-
-
|
44
|
+
- Transpilers
|
45
45
|
- [TypeScript](https://github.com/hokaccha/simpacker/tree/master/example/typescript)
|
46
46
|
- [Babel](https://github.com/hokaccha/simpacker/tree/master/example/babel)
|
47
|
+
- Style Sheets
|
48
|
+
- [CSS](https://github.com/hokaccha/simpacker/tree/master/example/css)
|
47
49
|
- [Sass](https://github.com/hokaccha/simpacker/tree/master/example/sass)
|
48
50
|
- Frameworks
|
49
51
|
- [React](https://github.com/hokaccha/simpacker/tree/master/example/react)
|
@@ -53,8 +55,10 @@ $ ./node_modules/.bin/wabpack --watch
|
|
53
55
|
- [CDN](https://github.com/hokaccha/simpacker/tree/master/example/asset-host)
|
54
56
|
- [Heroku](https://github.com/hokaccha/simpacker/tree/master/example/heroku)
|
55
57
|
- [Docker](https://github.com/hokaccha/simpacker/tree/master/example/docker)
|
56
|
-
-
|
58
|
+
- Advanced settings
|
57
59
|
- [Rails Engines](https://github.com/hokaccha/simpacker/tree/master/example/engines)
|
60
|
+
- [Custom helper](https://github.com/hokaccha/simpacker/tree/master/example/custom-helper)
|
61
|
+
- Bundler
|
58
62
|
- [Parcel](https://github.com/hokaccha/simpacker/tree/master/example/parcel)
|
59
63
|
|
60
64
|
## VS. Webpacker
|
File without changes
|
@@ -8,7 +8,7 @@ module.exports = {
|
|
8
8
|
mode: isProd ? "production" : "development",
|
9
9
|
devtool: "source-map",
|
10
10
|
entry: {
|
11
|
-
application: path.resolve(__dirname, "app/javascript/application.
|
11
|
+
application: path.resolve(__dirname, "app/javascript/application.js")
|
12
12
|
},
|
13
13
|
output: {
|
14
14
|
path: path.resolve(__dirname, "public/packs"),
|
@@ -16,18 +16,7 @@ module.exports = {
|
|
16
16
|
filename: isProd ? "[name]-[hash].js" : "[name].js"
|
17
17
|
},
|
18
18
|
resolve: {
|
19
|
-
extensions: [".js"
|
20
|
-
},
|
21
|
-
module: {
|
22
|
-
rules: [
|
23
|
-
{
|
24
|
-
test: /\.tsx?$/,
|
25
|
-
loader: "ts-loader",
|
26
|
-
options: {
|
27
|
-
transpileOnly: true
|
28
|
-
}
|
29
|
-
}
|
30
|
-
]
|
19
|
+
extensions: [".js"]
|
31
20
|
},
|
32
21
|
plugins: [new WebpackAssetsManifest({ publicPath: true })]
|
33
22
|
};
|
data/lib/install/template.rb
CHANGED
@@ -1,7 +1,6 @@
|
|
1
1
|
puts "Copying config files"
|
2
2
|
copy_file "#{__dir__}/config/simpacker.yml", "config/simpacker.yml"
|
3
3
|
copy_file "#{__dir__}/root/webpack.config.js", "webpack.config.js"
|
4
|
-
copy_file "#{__dir__}/root/tsconfig.json", "tsconfig.json"
|
5
4
|
|
6
5
|
unless File.exist?('package.json')
|
7
6
|
copy_file "#{__dir__}/root/package.json", "package.json"
|
@@ -24,8 +23,6 @@ dep_packages = %w(
|
|
24
23
|
webpack
|
25
24
|
webpack-cli
|
26
25
|
webpack-assets-manifest
|
27
|
-
typescript
|
28
|
-
ts-loader
|
29
26
|
).join(' ')
|
30
27
|
|
31
28
|
say "Installing npm packages"
|
@@ -1,39 +1,14 @@
|
|
1
|
-
require "yaml"
|
2
|
-
|
3
1
|
module Simpacker
|
4
2
|
class Configuration
|
5
|
-
attr_accessor :
|
6
|
-
|
7
|
-
def initialize(root_path:)
|
8
|
-
@root_path = root_path
|
9
|
-
@config_path = @root_path.join("config/simpacker.yml")
|
10
|
-
@env = Rails.env
|
11
|
-
end
|
3
|
+
attr_accessor :manifest_path, :cache_manifest
|
12
4
|
|
13
|
-
def manifest_path
|
14
|
-
|
5
|
+
def initialize(manifest_path:, cache_manifest: true)
|
6
|
+
@manifest_path = manifest_path
|
7
|
+
@cache_manifest = cache_manifest
|
15
8
|
end
|
16
9
|
|
17
10
|
def cache_manifest?
|
18
|
-
|
19
|
-
end
|
20
|
-
|
21
|
-
private
|
22
|
-
|
23
|
-
def data
|
24
|
-
@data ||= load
|
25
|
-
end
|
26
|
-
|
27
|
-
def load
|
28
|
-
YAML.load(config_path.read)[env]
|
29
|
-
rescue Errno::ENOENT => e
|
30
|
-
raise "Simpacker configuration file not found #{config_path}. " \
|
31
|
-
"Please run rails simpacker:install " \
|
32
|
-
"Error: #{e.message}"
|
33
|
-
rescue Psych::SyntaxError => e
|
34
|
-
raise "YAML syntax error occurred while parsing #{config_path}. " \
|
35
|
-
"Please note that YAML must be consistently indented using spaces. Tabs are not allowed. " \
|
36
|
-
"Error: #{e.message}"
|
11
|
+
!!cache_manifest
|
37
12
|
end
|
38
13
|
end
|
39
14
|
end
|
data/lib/simpacker/context.rb
CHANGED
@@ -1,10 +1,33 @@
|
|
1
|
+
require "yaml"
|
2
|
+
|
1
3
|
module Simpacker
|
2
4
|
class Context
|
5
|
+
class InvalidConfigurationError < StandardError; end
|
6
|
+
|
3
7
|
attr_reader :config, :manifest
|
4
8
|
|
5
|
-
def initialize(root_path: Rails.root)
|
6
|
-
|
7
|
-
@
|
9
|
+
def initialize(root_path: Rails.root, env: Rails.env)
|
10
|
+
config = load_config_file(root_path, env)
|
11
|
+
@config = Simpacker::Configuration.new(config)
|
12
|
+
@manifest = Simpacker::Manifest.new(@config)
|
13
|
+
end
|
14
|
+
|
15
|
+
private
|
16
|
+
|
17
|
+
def load_config_file(root_path, env)
|
18
|
+
config_path = root_path.join("config/simpacker.yml")
|
19
|
+
yaml = YAML.load(config_path.read)
|
20
|
+
config_env = yaml.fetch(env.to_s)
|
21
|
+
{
|
22
|
+
manifest_path: root_path.join(config_env.fetch('manifest_path')),
|
23
|
+
cache_manifest: config_env.fetch('cache_manifest'),
|
24
|
+
}
|
25
|
+
rescue Errno::ENOENT
|
26
|
+
raise Simpacker::Context::InvalidConfigurationError, "Simpacker configuration file not found #{config_path}"
|
27
|
+
rescue KeyError => err
|
28
|
+
raise Simpacker::Context::InvalidConfigurationError, "Missing field: `#{err.key}` in #{config_path}"
|
29
|
+
rescue Psych::SyntaxError => err
|
30
|
+
raise Simpacker::Context::InvalidConfigurationError, "YAML syntax error occurred while parsing #{config_path}. Error: #{err.message}"
|
8
31
|
end
|
9
32
|
end
|
10
33
|
end
|
data/lib/simpacker/manifest.rb
CHANGED
@@ -1,29 +1,30 @@
|
|
1
1
|
module Simpacker
|
2
2
|
class Manifest
|
3
3
|
class MissingEntryError < StandardError; end
|
4
|
+
class MissingFileError < StandardError; end
|
4
5
|
|
5
|
-
attr_reader :
|
6
|
+
attr_reader :config
|
6
7
|
|
7
|
-
def initialize(
|
8
|
-
@
|
8
|
+
def initialize(config)
|
9
|
+
@config = config
|
9
10
|
end
|
10
11
|
|
11
|
-
def lookup(
|
12
|
-
data
|
12
|
+
def lookup(*names)
|
13
|
+
data.dig(*names.map(&:to_s))
|
13
14
|
end
|
14
15
|
|
15
|
-
def lookup!(
|
16
|
-
lookup(
|
16
|
+
def lookup!(*names)
|
17
|
+
lookup(*names) || handle_missing_entry(names)
|
17
18
|
end
|
18
19
|
|
19
20
|
private
|
20
21
|
|
21
|
-
def handle_missing_entry(
|
22
|
-
raise Simpacker::Manifest::MissingEntryError
|
22
|
+
def handle_missing_entry(names)
|
23
|
+
raise Simpacker::Manifest::MissingEntryError, "Missing field: #{names.join('.')}"
|
23
24
|
end
|
24
25
|
|
25
26
|
def data
|
26
|
-
if
|
27
|
+
if config.cache_manifest?
|
27
28
|
@data ||= load
|
28
29
|
else
|
29
30
|
load
|
@@ -31,10 +32,10 @@ module Simpacker
|
|
31
32
|
end
|
32
33
|
|
33
34
|
def load
|
34
|
-
if
|
35
|
-
JSON.parse(
|
35
|
+
if config.manifest_path.exist? && config.manifest_path.file?
|
36
|
+
JSON.parse(config.manifest_path.read)
|
36
37
|
else
|
37
|
-
{}
|
38
|
+
raise Simpacker::Manifest::MissingFileError, "Missing manifest file: #{config.manifest_path}"
|
38
39
|
end
|
39
40
|
end
|
40
41
|
end
|
data/lib/simpacker/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: simpacker
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kazuhito Hokamura
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-07-
|
11
|
+
date: 2019-07-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: railties
|
@@ -89,16 +89,16 @@ extra_rdoc_files: []
|
|
89
89
|
files:
|
90
90
|
- ".gitignore"
|
91
91
|
- ".travis.yml"
|
92
|
+
- CHANGELOG.md
|
92
93
|
- Gemfile
|
93
94
|
- README.md
|
94
95
|
- Rakefile
|
95
96
|
- bin/console
|
96
97
|
- bin/setup
|
97
98
|
- lib/install/config/simpacker.yml
|
98
|
-
- lib/install/javascript/application.
|
99
|
-
- lib/install/javascript/greeter.
|
99
|
+
- lib/install/javascript/application.js
|
100
|
+
- lib/install/javascript/greeter.js
|
100
101
|
- lib/install/root/package.json
|
101
|
-
- lib/install/root/tsconfig.json
|
102
102
|
- lib/install/root/webpack.config.js
|
103
103
|
- lib/install/template.rb
|
104
104
|
- lib/simpacker.rb
|
@@ -1,18 +0,0 @@
|
|
1
|
-
{
|
2
|
-
"compilerOptions": {
|
3
|
-
"target": "es5",
|
4
|
-
"lib": ["es2019", "dom", "dom.iterable"],
|
5
|
-
"module": "es2015",
|
6
|
-
"moduleResolution": "node",
|
7
|
-
"esModuleInterop": true,
|
8
|
-
"downlevelIteration": true,
|
9
|
-
"sourceMap": true,
|
10
|
-
"removeComments": false,
|
11
|
-
"noImplicitAny": false,
|
12
|
-
"strictNullChecks": true,
|
13
|
-
"strictFunctionTypes": true,
|
14
|
-
"strictBindCallApply": true,
|
15
|
-
"strictPropertyInitialization": true,
|
16
|
-
"noImplicitThis": true
|
17
|
-
}
|
18
|
-
}
|