shakapacker 8.0.2 → 9.2.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/.eslintignore +1 -0
- data/.eslintrc.fast.js +40 -0
- data/.eslintrc.js +48 -0
- data/.github/STATUS.md +1 -0
- data/.github/workflows/claude-code-review.yml +54 -0
- data/.github/workflows/claude.yml +50 -0
- data/.github/workflows/dummy.yml +9 -4
- data/.github/workflows/generator.yml +32 -10
- data/.github/workflows/node.yml +23 -1
- data/.github/workflows/ruby.yml +33 -2
- data/.github/workflows/test-bundlers.yml +170 -0
- data/.gitignore +20 -0
- data/.husky/pre-commit +2 -0
- data/.npmignore +56 -0
- data/.prettierignore +3 -0
- data/.rubocop.yml +1 -0
- data/.yalcignore +26 -0
- data/CHANGELOG.md +302 -16
- data/CLAUDE.md +29 -0
- data/CONTRIBUTING.md +138 -20
- data/Gemfile.lock +83 -89
- data/README.md +343 -105
- data/Rakefile +39 -4
- data/TODO.md +50 -0
- data/TODO_v9.md +87 -0
- data/bin/export-bundler-config +11 -0
- data/conductor-setup.sh +70 -0
- data/conductor.json +7 -0
- data/docs/cdn_setup.md +379 -0
- data/docs/common-upgrades.md +615 -0
- data/docs/css-modules-export-mode.md +512 -0
- data/docs/deployment.md +62 -9
- data/docs/optional-peer-dependencies.md +198 -0
- data/docs/peer-dependencies.md +60 -0
- data/docs/react.md +6 -14
- data/docs/releasing.md +197 -0
- data/docs/rspack.md +190 -0
- data/docs/rspack_migration_guide.md +305 -0
- data/docs/subresource_integrity.md +54 -0
- data/docs/transpiler-migration.md +209 -0
- data/docs/transpiler-performance.md +179 -0
- data/docs/troubleshooting.md +157 -22
- data/docs/typescript-migration.md +379 -0
- data/docs/typescript.md +99 -0
- data/docs/using_esbuild_loader.md +3 -3
- data/docs/using_swc_loader.md +112 -10
- data/docs/v6_upgrade.md +10 -0
- data/docs/v8_upgrade.md +3 -5
- data/docs/v9_upgrade.md +458 -0
- data/gemfiles/Gemfile-rails.6.0.x +2 -1
- data/gemfiles/Gemfile-rails.6.1.x +1 -1
- data/gemfiles/Gemfile-rails.7.0.x +2 -2
- data/gemfiles/Gemfile-rails.7.1.x +1 -2
- data/gemfiles/Gemfile-rails.7.2.x +11 -0
- data/gemfiles/Gemfile-rails.8.0.x +11 -0
- data/lib/install/bin/export-bundler-config +11 -0
- data/lib/install/bin/shakapacker +4 -6
- data/lib/install/bin/shakapacker-dev-server +1 -1
- data/lib/install/config/rspack/rspack.config.js +6 -0
- data/lib/install/config/rspack/rspack.config.ts +7 -0
- data/lib/install/config/shakapacker.yml +25 -5
- data/lib/install/config/webpack/webpack.config.ts +7 -0
- data/lib/install/package.json +38 -0
- data/lib/install/template.rb +194 -44
- data/lib/shakapacker/bundler_switcher.rb +329 -0
- data/lib/shakapacker/compiler.rb +2 -1
- data/lib/shakapacker/compiler_strategy.rb +2 -2
- data/lib/shakapacker/configuration.rb +173 -2
- data/lib/shakapacker/dev_server_runner.rb +29 -8
- data/lib/shakapacker/digest_strategy.rb +2 -1
- data/lib/shakapacker/doctor.rb +905 -0
- data/lib/shakapacker/helper.rb +64 -16
- data/lib/shakapacker/manifest.rb +10 -3
- data/lib/shakapacker/mtime_strategy.rb +1 -1
- data/lib/shakapacker/railtie.rb +4 -4
- data/lib/shakapacker/rspack_runner.rb +19 -0
- data/lib/shakapacker/runner.rb +159 -10
- data/lib/shakapacker/swc_migrator.rb +384 -0
- data/lib/shakapacker/utils/manager.rb +15 -2
- data/lib/shakapacker/version.rb +1 -1
- data/lib/shakapacker/version_checker.rb +2 -2
- data/lib/shakapacker/webpack_runner.rb +6 -43
- data/lib/shakapacker.rb +22 -11
- data/lib/tasks/shakapacker/doctor.rake +8 -0
- data/lib/tasks/shakapacker/export_bundler_config.rake +72 -0
- data/lib/tasks/shakapacker/install.rake +12 -2
- data/lib/tasks/shakapacker/migrate_to_swc.rake +13 -0
- data/lib/tasks/shakapacker/switch_bundler.rake +82 -0
- data/lib/tasks/shakapacker.rake +2 -0
- data/package/.npmignore +4 -0
- data/package/babel/preset.ts +56 -0
- data/package/config.ts +175 -0
- data/package/configExporter/cli.ts +683 -0
- data/package/configExporter/configDocs.ts +102 -0
- data/package/configExporter/fileWriter.ts +92 -0
- data/package/configExporter/index.ts +5 -0
- data/package/configExporter/types.ts +36 -0
- data/package/configExporter/yamlSerializer.ts +266 -0
- data/package/{dev_server.js → dev_server.ts} +8 -5
- data/package/env.ts +92 -0
- data/package/environments/__type-tests__/rspack-plugin-compatibility.ts +30 -0
- data/package/environments/{base.js → base.ts} +56 -60
- data/package/environments/development.ts +90 -0
- data/package/environments/production.ts +80 -0
- data/package/environments/test.ts +53 -0
- data/package/environments/types.ts +98 -0
- data/package/esbuild/index.ts +42 -0
- data/package/index.d.ts +3 -60
- data/package/index.ts +55 -0
- data/package/loaders.d.ts +28 -0
- data/package/optimization/rspack.ts +36 -0
- data/package/optimization/webpack.ts +57 -0
- data/package/plugins/rspack.ts +103 -0
- data/package/plugins/webpack.ts +62 -0
- data/package/rspack/index.ts +64 -0
- data/package/rules/{babel.js → babel.ts} +2 -2
- data/package/rules/{coffee.js → coffee.ts} +1 -1
- data/package/rules/css.ts +3 -0
- data/package/rules/{erb.js → erb.ts} +1 -1
- data/package/rules/esbuild.ts +10 -0
- data/package/rules/file.ts +40 -0
- data/package/rules/{jscommon.js → jscommon.ts} +4 -4
- data/package/rules/{less.js → less.ts} +4 -4
- data/package/rules/raw.ts +25 -0
- data/package/rules/rspack.ts +176 -0
- data/package/rules/{sass.js → sass.ts} +7 -3
- data/package/rules/{stylus.js → stylus.ts} +4 -8
- data/package/rules/swc.ts +10 -0
- data/package/rules/webpack.ts +16 -0
- data/package/swc/index.ts +56 -0
- data/package/types/README.md +88 -0
- data/package/types/index.ts +61 -0
- data/package/types.ts +108 -0
- data/package/utils/configPath.ts +6 -0
- data/package/utils/debug.ts +49 -0
- data/package/utils/defaultConfigPath.ts +4 -0
- data/package/utils/errorCodes.ts +219 -0
- data/package/utils/errorHelpers.ts +143 -0
- data/package/utils/getStyleRule.ts +64 -0
- data/package/utils/helpers.ts +85 -0
- data/package/utils/{inliningCss.js → inliningCss.ts} +3 -3
- data/package/utils/pathValidation.ts +139 -0
- data/package/utils/requireOrError.ts +15 -0
- data/package/utils/snakeToCamelCase.ts +5 -0
- data/package/utils/typeGuards.ts +342 -0
- data/package/utils/validateDependencies.ts +61 -0
- data/package/webpack-types.d.ts +33 -0
- data/package/webpackDevServerConfig.ts +117 -0
- data/package-lock.json +13047 -0
- data/package.json +154 -18
- data/scripts/remove-use-strict.js +45 -0
- data/scripts/type-check-no-emit.js +27 -0
- data/test/helpers.js +1 -1
- data/test/package/config.test.js +43 -0
- data/test/package/env.test.js +42 -7
- data/test/package/environments/base.test.js +5 -1
- data/test/package/rules/babel.test.js +16 -0
- data/test/package/rules/esbuild.test.js +1 -1
- data/test/package/rules/raw.test.js +40 -7
- data/test/package/rules/swc.test.js +1 -1
- data/test/package/rules/webpack.test.js +35 -0
- data/test/package/staging.test.js +4 -3
- data/test/package/transpiler-defaults.test.js +127 -0
- data/test/peer-dependencies.sh +85 -0
- data/test/scripts/remove-use-strict.test.js +125 -0
- data/test/typescript/build.test.js +118 -0
- data/test/typescript/environments.test.js +107 -0
- data/test/typescript/pathValidation.test.js +142 -0
- data/test/typescript/securityValidation.test.js +182 -0
- data/tools/README.md +124 -0
- data/tools/css-modules-v9-codemod.js +179 -0
- data/tsconfig.eslint.json +16 -0
- data/tsconfig.json +38 -0
- data/yarn.lock +4165 -2706
- metadata +129 -41
- data/package/babel/preset.js +0 -37
- data/package/config.js +0 -54
- data/package/env.js +0 -48
- data/package/environments/development.js +0 -13
- data/package/environments/production.js +0 -88
- data/package/environments/test.js +0 -3
- data/package/esbuild/index.js +0 -40
- data/package/index.js +0 -40
- data/package/rules/css.js +0 -3
- data/package/rules/esbuild.js +0 -10
- data/package/rules/file.js +0 -29
- data/package/rules/index.js +0 -20
- data/package/rules/raw.js +0 -5
- data/package/rules/swc.js +0 -10
- data/package/swc/index.js +0 -50
- data/package/utils/configPath.js +0 -4
- data/package/utils/defaultConfigPath.js +0 -2
- data/package/utils/getStyleRule.js +0 -40
- data/package/utils/helpers.js +0 -58
- data/package/utils/snakeToCamelCase.js +0 -5
- data/package/webpackDevServerConfig.js +0 -71
- data/test/package/rules/index.test.js +0 -16
data/CHANGELOG.md
CHANGED
|
@@ -1,22 +1,238 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
- For the changelog of versions prior to v6, see the [5.x stable branch of rails/webpacker](https://github.com/rails/webpacker/tree/5-x-stable).
|
|
2
|
+
- **Please see the [v9 Upgrade Guide](./docs/v9_upgrade.md) for upgrading to version 9 and accounting for breaking changes.**
|
|
3
|
+
- Please see the [v8 Upgrade Guide](./docs/v8_upgrade.md) for upgrading to version 8 and accounting for breaking changes.
|
|
4
|
+
- Please see the [v7 Upgrade Guide](./docs/v7_upgrade.md) for upgrading to new spelling in version 7.
|
|
5
|
+
- Please see the [v6 Upgrade Guide](./docs/v6_upgrade.md) to go from versions prior to v6.
|
|
6
|
+
- [ShakaCode](https://www.shakacode.com) offers support for upgrading from Webpacker or using Shakapacker. If interested, contact Justin Gordon, [justin@shakacode.com](mailto:justin@shakacode.com).
|
|
6
7
|
|
|
7
|
-
|
|
8
|
+
# Versions
|
|
8
9
|
|
|
9
|
-
## Versions
|
|
10
10
|
## [Unreleased]
|
|
11
|
+
|
|
11
12
|
Changes since the last non-beta release.
|
|
12
13
|
|
|
14
|
+
## [v9.1.1] - October 9, 2025
|
|
15
|
+
|
|
16
|
+
### Added
|
|
17
|
+
|
|
18
|
+
- **New config export utility for debugging webpack/rspack configurations** [PR #647](https://github.com/shakacode/shakapacker/pull/647) by [justin808](https://github.com/justin808).
|
|
19
|
+
- Adds `bin/export-bundler-config` utility with three modes:
|
|
20
|
+
- **Doctor mode** (`--doctor`): Exports all configs (dev + prod, client + server) to `shakapacker-config-exports/` directory - best for troubleshooting
|
|
21
|
+
- **Save mode** (`--save`): Export current environment configs to files
|
|
22
|
+
- **Stdout mode** (default): View configs in terminal
|
|
23
|
+
- **Output formats:** YAML (with optional inline documentation), JSON, or Node.js inspect
|
|
24
|
+
- **Smart features:**
|
|
25
|
+
- Environment isolation ensures dev/prod configs are truly different
|
|
26
|
+
- Auto-detects bundler from `shakapacker.yml`
|
|
27
|
+
- Pretty-prints functions (up to 50 lines)
|
|
28
|
+
- Validates bundler value and output paths
|
|
29
|
+
- Sanitizes filenames to prevent path traversal
|
|
30
|
+
- Helpful `.gitignore` suggestions
|
|
31
|
+
- **Usage:** `bin/export-bundler-config --doctor` or `bundle exec rake shakapacker:export_bundler_config`
|
|
32
|
+
- Works seamlessly with `rake shakapacker:switch_bundler` for comparing webpack vs rspack configs
|
|
33
|
+
- Lays groundwork for future config diff feature (tracked in [#667](https://github.com/shakacode/shakapacker/issues/667))
|
|
34
|
+
|
|
35
|
+
### Fixed
|
|
36
|
+
|
|
37
|
+
- Fixed NoMethodError when custom environment (e.g., staging) is not defined in shakapacker.yml. [PR #669](https://github.com/shakacode/shakapacker/pull/669) by [justin808](https://github.com/justin808).
|
|
38
|
+
- When deploying to environments like Heroku staging with `RAILS_ENV=staging`, shakapacker would crash with `undefined method 'deep_symbolize_keys' for nil:NilClass`
|
|
39
|
+
- **Configuration fallback:** Now properly falls back to production environment configuration (appropriate for staging)
|
|
40
|
+
- **NODE_ENV handling:** `bin/shakapacker` now automatically sets `NODE_ENV=production` for custom environments (staging, etc.)
|
|
41
|
+
- Previously: `RAILS_ENV=staging` would set `NODE_ENV=development`, breaking webpack optimizations
|
|
42
|
+
- Now: `RAILS_ENV` in `[development, test]` uses that value for `NODE_ENV`, everything else uses `production`
|
|
43
|
+
- Logs informational message when falling back to help with debugging
|
|
44
|
+
- This ensures shakapacker works with any Rails environment even if not explicitly defined in shakapacker.yml
|
|
45
|
+
- Fixes [#663](https://github.com/shakacode/shakapacker/issues/663)
|
|
46
|
+
|
|
47
|
+
## [v9.1.0] - October 8, 2025
|
|
48
|
+
|
|
49
|
+
**⚠️ IMPORTANT:** This release includes a breaking change for SWC users. Please see the [v9 Upgrade Guide - SWC Loose Mode Breaking Change](./docs/v9_upgrade.md#swc-loose-mode-breaking-change-v910) for migration details.
|
|
50
|
+
|
|
51
|
+
### ⚠️ Breaking Changes
|
|
52
|
+
|
|
53
|
+
- **SWC default configuration now uses `loose: false` for spec-compliant transforms** ([#658](https://github.com/shakacode/shakapacker/pull/658))
|
|
54
|
+
- Previously, Shakapacker set `loose: true` by default in SWC configuration, which caused:
|
|
55
|
+
- Silent failures with Stimulus controllers
|
|
56
|
+
- Incorrect behavior with spread operators on iterables (e.g., `[...new Set()]`)
|
|
57
|
+
- Deviation from both SWC and Babel upstream defaults
|
|
58
|
+
- Now defaults to `loose: false`, matching SWC's default and fixing compatibility with Stimulus
|
|
59
|
+
- This aligns with the previous fix to Babel configuration in [PR #107](https://github.com/shakacode/shakapacker/pull/107)
|
|
60
|
+
- **Migration:** Most projects need no changes as the new default provides spec-compliant behavior. Projects with Stimulus will benefit from this fix. See [v9 Upgrade Guide - SWC Loose Mode](./docs/v9_upgrade.md#swc-loose-mode-breaking-change-v910) for details
|
|
61
|
+
- If you must restore the old behavior (not recommended), add to `config/swc.config.js`:
|
|
62
|
+
```javascript
|
|
63
|
+
module.exports = {
|
|
64
|
+
options: {
|
|
65
|
+
jsc: {
|
|
66
|
+
// Only use this if you have code that requires loose transforms.
|
|
67
|
+
// This provides slightly faster build performance but may cause runtime bugs.
|
|
68
|
+
loose: true // Restore v9.0.0 behavior
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
### Added
|
|
75
|
+
|
|
76
|
+
- **New `shakapacker:switch_bundler` rake task** for easy switching between webpack and rspack
|
|
77
|
+
- Automatically updates `config/shakapacker.yml` to switch bundler configuration
|
|
78
|
+
- Optional `--install-deps` flag to automatically manage dependencies
|
|
79
|
+
- `--no-uninstall` flag for faster switching by keeping both bundlers installed
|
|
80
|
+
- **Supports all package managers**: Auto-detects and uses npm, yarn, pnpm, or bun
|
|
81
|
+
- Shows clear list of packages being added/removed during dependency management
|
|
82
|
+
- Support for custom dependency configuration via `.shakapacker-switch-bundler-dependencies.yml`
|
|
83
|
+
- Includes SWC dependencies (`@swc/core`, `swc-loader`) in default webpack setup
|
|
84
|
+
- Preserves config file structure and comments during updates
|
|
85
|
+
- Updates `javascript_transpiler` to `swc` when switching to rspack (recommended)
|
|
86
|
+
- Ruby 2.7+ compatible YAML loading with proper alias/anchor support
|
|
87
|
+
- Secure command execution (prevents shell injection)
|
|
88
|
+
- Usage: `rails shakapacker:switch_bundler [webpack|rspack] [--install-deps] [--no-uninstall]`
|
|
89
|
+
- See rake task help: `rails shakapacker:switch_bundler --help`
|
|
90
|
+
- **Stimulus compatibility built into SWC migration** ([#658](https://github.com/shakacode/shakapacker/pull/658))
|
|
91
|
+
- `rake shakapacker:migrate_to_swc` now creates `config/swc.config.js` with `keepClassNames: true`
|
|
92
|
+
- Prevents SWC from mangling class names, which breaks Stimulus controller discovery
|
|
93
|
+
- Includes React Fast Refresh configuration by default
|
|
94
|
+
- **Comprehensive Stimulus documentation** for SWC users ([#658](https://github.com/shakacode/shakapacker/pull/658))
|
|
95
|
+
- Added "Using SWC with Stimulus" section to [docs/using_swc_loader.md](./docs/using_swc_loader.md#using-swc-with-stimulus)
|
|
96
|
+
- Documents symptoms of missing configuration (silent failures)
|
|
97
|
+
- Explains common errors like `env` and `jsc.target` conflicts
|
|
98
|
+
- Added Stimulus compatibility checklist to migration guide
|
|
99
|
+
- **Enhanced `rake shakapacker:doctor` for SWC configuration validation** ([#658](https://github.com/shakacode/shakapacker/pull/658))
|
|
100
|
+
- Detects `loose: true` in config and warns about potential issues
|
|
101
|
+
- Detects missing `keepClassNames: true` when Stimulus is installed
|
|
102
|
+
- Detects conflicting `jsc.target` and `env` configuration
|
|
103
|
+
- Provides actionable warnings with links to documentation
|
|
104
|
+
|
|
105
|
+
### Fixed
|
|
106
|
+
|
|
107
|
+
- Fixed `rake shakapacker:migrate_to_swc` to correctly set `javascript_transpiler: "swc"` instead of unused `swc: true` flag ([#659](https://github.com/shakacode/shakapacker/pull/659))
|
|
108
|
+
- The migration now properly configures SWC as the transpiler
|
|
109
|
+
- Users who previously ran the migration should update their `config/shakapacker.yml` to use `javascript_transpiler: "swc"` instead of `swc: true`
|
|
110
|
+
- Restore `RspackPlugin` type as an alias to `RspackPluginInstance` for backward compatibility. The type is now deprecated in favor of `RspackPluginInstance`. [#650](https://github.com/shakacode/shakapacker/issues/650)
|
|
111
|
+
|
|
112
|
+
## [v9.0.0] - October 5, 2025
|
|
113
|
+
|
|
114
|
+
See the [v9 Upgrade Guide](https://github.com/shakacode/shakapacker/blob/main/docs/v9_upgrade.md) for detailed migration instructions.
|
|
115
|
+
|
|
116
|
+
### ⚠️ Breaking Changes
|
|
117
|
+
|
|
118
|
+
1. **SWC is now the default JavaScript transpiler instead of Babel** ([PR 603](https://github.com/shakacode/shakapacker/pull/603) by [justin808](https://github.com/justin808))
|
|
119
|
+
|
|
120
|
+
- Babel dependencies are no longer included as peer dependencies
|
|
121
|
+
- Improves compilation speed by 20x
|
|
122
|
+
- **Migration for existing projects:**
|
|
123
|
+
- **Option 1 (Recommended):** Switch to SWC - Run `rake shakapacker:migrate_to_swc` or manually:
|
|
124
|
+
```yaml
|
|
125
|
+
# config/shakapacker.yml
|
|
126
|
+
javascript_transpiler: "swc"
|
|
127
|
+
```
|
|
128
|
+
Then install: `npm install @swc/core swc-loader`
|
|
129
|
+
- **Option 2:** Keep using Babel:
|
|
130
|
+
```yaml
|
|
131
|
+
# config/shakapacker.yml
|
|
132
|
+
javascript_transpiler: "babel"
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
2. **CSS Modules now use named exports by default** ([PR 599](https://github.com/shakacode/shakapacker/pull/599))
|
|
136
|
+
|
|
137
|
+
- **JavaScript:** Use named imports: `import { className } from './styles.module.css'`
|
|
138
|
+
- **TypeScript:** Use namespace imports: `import * as styles from './styles.module.css'`
|
|
139
|
+
- To keep the old behavior with default imports, see [CSS Modules Export Mode documentation](./docs/css-modules-export-mode.md) for configuration instructions
|
|
140
|
+
|
|
141
|
+
3. **Configuration option renamed from `webpack_loader` to `javascript_transpiler`**
|
|
142
|
+
- Better reflects its purpose of configuring JavaScript transpilation
|
|
143
|
+
- Old `webpack_loader` option deprecated but still supported with warning
|
|
144
|
+
|
|
145
|
+
### Added
|
|
146
|
+
|
|
147
|
+
- **Rspack support** as an alternative assets bundler to webpack ([PR 589](https://github.com/shakacode/shakapacker/pull/589), [PR 590](https://github.com/shakacode/shakapacker/pull/590))
|
|
148
|
+
- Configure `assets_bundler: 'rspack'` in `shakapacker.yml`
|
|
149
|
+
- Faster Rust-based bundling with webpack-compatible APIs
|
|
150
|
+
- Built-in SWC loader and CSS extraction
|
|
151
|
+
- Automatic bundler detection in `bin/shakapacker`
|
|
152
|
+
- **TypeScript type definitions** for improved IDE support and autocomplete ([PR 602](https://github.com/shakacode/shakapacker/pull/602))
|
|
153
|
+
- Types available via `import type { WebpackConfig, RspackConfig, EnvironmentConfig } from "shakapacker/types"`
|
|
154
|
+
- Installer automatically creates TypeScript config files when `tsconfig.json` is detected ([PR 633](https://github.com/shakacode/shakapacker/pull/633))
|
|
155
|
+
- See [TypeScript Documentation](./docs/typescript.md) for migration and usage instructions
|
|
156
|
+
- **Optional peer dependencies** - All peer dependencies now marked as optional, preventing installation warnings while maintaining version compatibility tracking ([PR 603](https://github.com/shakacode/shakapacker/pull/603))
|
|
157
|
+
- **Private output path** for server-side rendering bundles ([PR 592](https://github.com/shakacode/shakapacker/pull/592))
|
|
158
|
+
- Configure `private_output_path` for private server bundles separate from public assets
|
|
159
|
+
- **`rake shakapacker:doctor` diagnostic command** to check for configuration issues and missing dependencies ([PR 609](https://github.com/shakacode/shakapacker/pull/609))
|
|
160
|
+
- **`rake shakapacker:migrate_to_swc`** migration helper to assist with switching from Babel to SWC ([PR 613](https://github.com/shakacode/shakapacker/pull/613), [PR 635](https://github.com/shakacode/shakapacker/pull/635))
|
|
161
|
+
|
|
162
|
+
### Security
|
|
163
|
+
|
|
164
|
+
- **Path Validation Utilities** ([PR 614](https://github.com/shakacode/shakapacker/pull/614) by [justin808](https://github.com/justin808))
|
|
165
|
+
- Added validation to prevent directory traversal attacks
|
|
166
|
+
- Implemented environment variable sanitization to prevent injection
|
|
167
|
+
- Enforced strict port validation (reject strings with non-digits)
|
|
168
|
+
- Added SHAKAPACKER_NPM_PACKAGE path validation (only .tgz/.tar.gz allowed)
|
|
169
|
+
- Path traversal security checks now run regardless of validation mode
|
|
170
|
+
|
|
171
|
+
### Fixed
|
|
172
|
+
|
|
173
|
+
- Fixed NODE_ENV defaulting to production breaking dev server ([PR 632](https://github.com/shakacode/shakapacker/pull/632)). NODE_ENV now defaults to development unless RAILS_ENV is explicitly set to production. This ensures the dev server works out of the box without requiring NODE_ENV to be set.
|
|
174
|
+
- Fixed SWC migration to use `config/swc.config.js` instead of `.swcrc` ([PR 635](https://github.com/shakacode/shakapacker/pull/635)). The `.swcrc` file bypasses webpack-merge and overrides Shakapacker's defaults, while `config/swc.config.js` properly merges with defaults.
|
|
175
|
+
- Fixed private_output_path configuration edge cases ([PR 604](https://github.com/shakacode/shakapacker/pull/604))
|
|
176
|
+
- Updated webpack-dev-server to secure versions (^4.15.2 || ^5.2.2) ([PR 585](https://github.com/shakacode/shakapacker/pull/585))
|
|
177
|
+
|
|
178
|
+
## [v8.4.0] - September 8, 2024
|
|
179
|
+
|
|
180
|
+
### Added
|
|
181
|
+
|
|
182
|
+
- Support for subresource integrity. [PR 570](https://github.com/shakacode/shakapacker/pull/570) by [panagiotisplytas](https://github.com/panagiotisplytas).
|
|
183
|
+
|
|
184
|
+
### Fixed
|
|
185
|
+
|
|
186
|
+
- Install the latest major version of peer dependencies [PR 576](https://github.com/shakacode/shakapacker/pull/576) by [G-Rath](https://github.com/g-rath).
|
|
187
|
+
|
|
188
|
+
## [v8.3.0] - April 28, 2024
|
|
189
|
+
|
|
190
|
+
### Added
|
|
191
|
+
|
|
192
|
+
- Allow `webpack-assets-manifest` v6. [PR 562](https://github.com/shakacode/shakapacker/pull/562) by [tagliala](https://github.com/tagliala), [shoeyn](https://github.com/shoeyn).
|
|
193
|
+
|
|
194
|
+
### Changed
|
|
195
|
+
|
|
196
|
+
- Instead of a fixed `core-js` version, take the current one from `node_modules` if available. [PR 556](https://github.com/shakacode/shakapacker/pull/556) by [alexeyr-ci2](https://github.com/alexeyr-ci2).
|
|
197
|
+
- Require webpack >= 5.76.0 to reduce exposure to CVE-2023-28154. [PR 568](https://github.com/shakacode/shakapacker/pull/568) by [granowski](https://github.com/granowski).
|
|
198
|
+
|
|
199
|
+
### Fixed
|
|
200
|
+
|
|
201
|
+
- More precise types for `devServer` and `rules` in the configuration. [PR 555](https://github.com/shakacode/shakapacker/pull/555) by [alexeyr-ci2](https://github.com/alexeyr-ci2).
|
|
202
|
+
|
|
203
|
+
## [v8.2.0] - March 12, 2025
|
|
204
|
+
|
|
205
|
+
### Added
|
|
206
|
+
|
|
207
|
+
- Support for `async` attribute in `javascript_pack_tag`, `append_javascript_pack_tag`, and `prepend_javascript_pack_tag`. [PR 554](https://github.com/shakacode/shakapacker/pull/554) by [AbanoubGhadban](https://github.com/abanoubghadban).
|
|
208
|
+
- Allow `babel-loader` v10. [PR 552](https://github.com/shakacode/shakapacker/pull/552) by [shoeyn](https://github.com/shoeyn).
|
|
209
|
+
|
|
210
|
+
## [v8.1.0] - January 20, 2025
|
|
211
|
+
|
|
212
|
+
### Added
|
|
213
|
+
|
|
214
|
+
- Allow `webpack-cli` v6. [PR 533](https://github.com/shakacode/shakapacker/pull/533) by [tagliala](https://github.com/tagliala).
|
|
215
|
+
|
|
13
216
|
### Changed
|
|
14
217
|
|
|
15
|
-
-
|
|
218
|
+
- Changed internal `require`s to `require_relative` to make code less dependent on the load path. [PR 516](https://github.com/shakacode/shakapacker/pull/516) by [tagliala](https://github.com/tagliala).
|
|
219
|
+
- Allow configuring webpack from a Typescript file (`config/webpack/webpack.config.ts`). [PR 524](https://github.com/shakacode/shakapacker/pull/524) by [jdelStrother](https://github.com/jdelStrother).
|
|
220
|
+
|
|
221
|
+
### Fixed
|
|
222
|
+
|
|
223
|
+
- Fix error when rails environment is required from outside the rails root directory [PR 520](https://github.com/shakacode/shakapacker/pull/520)
|
|
224
|
+
|
|
225
|
+
## [v8.0.2] - August 28, 2024
|
|
226
|
+
|
|
227
|
+
### Fixed
|
|
228
|
+
|
|
229
|
+
- Fix wrong instruction in esbuild loader documentation [PR 504](https://github.com/shakacode/shakapacker/pull/504) by [adriangohjw](https://github.com/adriangohjw).
|
|
230
|
+
- Add logic to sass rule conditional on sass-loader version [PR 508](https://github.com/shakacode/shakapacker/pull/508) by [Judahmeek](https://github.com/Judahmeek).
|
|
16
231
|
|
|
17
232
|
## [v8.0.1] - July 10, 2024
|
|
18
233
|
|
|
19
234
|
### Changed
|
|
235
|
+
|
|
20
236
|
- Update outdated GitHub Actions to use Node.js 20.0 versions instead [PR 497](https://github.com/shakacode/shakapacker/pull/497) by [adriangohjw](https://github.com/adriangohjw).
|
|
21
237
|
- Allow `webpack-merge` v6 to be used [PR 502](https://github.com/shakacode/shakapacker/pull/502) by [G-Rath](https://github.com/g-rath).
|
|
22
238
|
|
|
@@ -77,71 +293,89 @@ See the [v8 Upgrade Guide](https://github.com/shakacode/shakapacker/blob/main/do
|
|
|
77
293
|
|
|
78
294
|
- Remove `isArray` utility (just use `Array.isArray` directly) and renamed a few files [PR 454](https://github.com/shakacode/shakapacker/pull/454) by [G-Rath](https://github.com/g-rath).
|
|
79
295
|
|
|
80
|
-
- Make JavaScript test helper utilities internal (`chdirTestApp`, `chdirCwd`, `resetEnv`)
|
|
296
|
+
- Make JavaScript test helper utilities internal (`chdirTestApp`, `chdirCwd`, `resetEnv`) [PR 458](https://github.com/shakacode/shakapacker/pull/458) by [G-Rath](https://github.com/g-rath).
|
|
81
297
|
|
|
82
298
|
## [v7.2.3] - March 23, 2024
|
|
83
299
|
|
|
84
300
|
### Added
|
|
301
|
+
|
|
85
302
|
- Emit warnings instead of errors when compilation is success but stderr is not empty. [PR 416](https://github.com/shakacode/shakapacker/pull/416) by [n-rodriguez](https://github.com/n-rodriguez).
|
|
86
303
|
- Allow `webpack-dev-server` v5. [PR 418](https://github.com/shakacode/shakapacker/pull/418) by [G-Rath](https://github.com/g-rath)
|
|
87
304
|
|
|
88
305
|
### Removed
|
|
306
|
+
|
|
89
307
|
- Removes dependency on `glob` library. [PR 435](https://github.com/shakacode/shakapacker/pull/435) by [tomdracz](https://github.com/tomdracz).
|
|
90
308
|
|
|
91
309
|
### Fixed
|
|
310
|
+
|
|
92
311
|
- Uses config file passed in `SHAKAPACKER_CONFIG` consistently.[PR 448](https://github.com/shakacode/shakapacker/pull/448) by [tomdracz](https://github.com/tomdracz).
|
|
93
312
|
|
|
94
|
-
|
|
313
|
+
Previously this could have been ignored in few code branches, especially when checking for available environments.
|
|
95
314
|
|
|
96
315
|
## [v7.2.2] - January 19, 2024
|
|
97
316
|
|
|
98
317
|
### Added
|
|
318
|
+
|
|
99
319
|
- Allow `compression-webpack-plugin` v11. [PR 406](https://github.com/shakacode/shakapacker/pull/406) by [tagliala](https://github.com/tagliala).
|
|
100
320
|
|
|
101
321
|
## [v7.2.1] - December 30, 2023
|
|
102
322
|
|
|
103
323
|
### Fixed
|
|
324
|
+
|
|
104
325
|
- Show deprecation message for `relative_url_root` only if it is set. [PR 400](https://github.com/shakacode/shakapacker/pull/400) by [ahangarha](https://github.com/ahangarha).
|
|
105
326
|
|
|
106
327
|
## [v7.2.0] - December 28, 2023
|
|
107
328
|
|
|
108
329
|
### Added
|
|
330
|
+
|
|
109
331
|
- Experimental support for other JS package managers using `package_json` gem [PR 349](https://github.com/shakacode/shakapacker/pull/349) by [G-Rath](https://github.com/g-rath).
|
|
110
332
|
- Support `hmr: only` configuration [PR 378](https://github.com/shakacode/shakapacker/pull/378) by [SimenB](https://github.com/SimenB).
|
|
111
333
|
- Use `config/shakapacker.yml` as the secondary source for `asset_host` and `relative_url_root` configurations [PR 376](https://github.com/shakacode/shakapacker/pull/376) by [ahangarha](https://github.com/ahangarha).
|
|
112
334
|
|
|
113
335
|
### Fixed
|
|
336
|
+
|
|
114
337
|
- Recommend `server` option instead of the deprecated `https` option when `--https` is provided [PR 380](https://github.com/shakacode/shakapacker/pull/380) by [G-Rath](https://github.com/g-rath)
|
|
115
338
|
- Recompile assets on asset host change [PR 364](https://github.com/shakacode/shakapacker/pull/364) by [ahangarha](https://github.com/ahangarha).
|
|
116
339
|
- Add deprecation warning for `https` option in `shakapacker.yml` (use `server: 'https'` instead) [PR 382](https://github.com/shakacode/shakapacker/pull/382) by [G-Rath](https://github.com/g-rath).
|
|
117
340
|
- Disable Hot Module Replacement in `webpack-dev-server` when `hmr: false` [PR 392](https://github.com/shakacode/shakapacker/pull/392) by [thedanbob](https://github.com/thedanbob).
|
|
118
341
|
|
|
119
342
|
### Deprecated
|
|
343
|
+
|
|
120
344
|
- The usage of `relative_url_root` is deprecated in Shakapacker and will be removed in v8. [PR 376](https://github.com/shakacode/shakapacker/pull/376) by [ahangarha](https://github.com/ahangarha).
|
|
121
345
|
|
|
122
346
|
## [v7.1.0] - September 30, 2023
|
|
123
347
|
|
|
124
348
|
### Added
|
|
349
|
+
|
|
125
350
|
- Support passing custom webpack config directly to `generateWebpackConfig` for merging [PR 343](https://github.com/shakacode/shakapacker/pull/343) by [G-Rath](https://github.com/g-rath).
|
|
126
351
|
|
|
127
352
|
### Fixed
|
|
353
|
+
|
|
128
354
|
- Use `NODE_OPTIONS` to enable Node-specific debugging flags [PR 350](https://github.com/shakacode/shakapacker/pull/350).
|
|
129
355
|
- Add the boilerplate `application.js` into `packs/` [PR 363](https://github.com/shakacode/shakapacker/pull/363).
|
|
130
356
|
|
|
131
357
|
## [v7.0.3] - July 7, 2023
|
|
358
|
+
|
|
132
359
|
### Fixed
|
|
360
|
+
|
|
133
361
|
- Fixed commands execution for projects with space in the absolute path [PR 322](https://github.com/shakacode/shakapacker/pull/322) by [kukicola](https://github.com/kukicola).
|
|
134
362
|
|
|
135
363
|
## [v7.0.2] - July 3, 2023
|
|
364
|
+
|
|
136
365
|
### Fixed
|
|
366
|
+
|
|
137
367
|
- Fixed creation of assets:precompile if it is missing [PR 325](https://github.com/shakacode/shakapacker/pull/325) by [ahangarha](https://github.com/ahangarha).
|
|
138
368
|
|
|
139
369
|
## [v7.0.1] - June 27, 2023
|
|
370
|
+
|
|
140
371
|
### Fixed
|
|
372
|
+
|
|
141
373
|
- Fixed the condition for showing warning for setting `useContentHash` to `false` in the production environment. [PR 320](https://github.com/shakacode/shakapacker/pull/320) by [ahangarha](https://github.com/ahangarha).
|
|
142
374
|
|
|
143
375
|
## [v7.0.0] - June 23, 2023
|
|
376
|
+
|
|
144
377
|
### Breaking changes
|
|
378
|
+
|
|
145
379
|
- Removes defaults passed to `@babel/preset-typescript`. [PR 273](https://github.com/shakacode/shakapacker/pull/273) by [tomdracz](https://github.com/tomdracz).
|
|
146
380
|
|
|
147
381
|
`@babel/preset-typescript` has been initialised in default configuration with `{ allExtensions: true, isTSX: true }` - meaning every file in the codebase was treated as TSX leading to potential issues. This has been removed and returns to sensible default of the preset which is to figure out the file type from the extensions. This change might affect generated output however so it is marked as breaking.
|
|
@@ -151,18 +385,21 @@ See the [v8 Upgrade Guide](https://github.com/shakacode/shakapacker/blob/main/do
|
|
|
151
385
|
The `webpackConfig` property in the `shakapacker` module has been updated to be a function instead of a global mutable webpack configuration. This function now returns an immutable webpack configuration object, which ensures that any modifications made to it will not affect any other usage of the webpack configuration. If a project still requires the old mutable object, it can be accessed by replacing `webpackConfig` with `globalMutableWebpackConfig`. Check [v7-upgrade](https://github.com/shakacode/shakapacker/blob/main/docs/v7_upgrade.md) documentation for more detail.
|
|
152
386
|
|
|
153
387
|
### Added
|
|
388
|
+
|
|
154
389
|
- Set CSS modules mode depending on file type. [PR 261](https://github.com/shakacode/shakapacker/pull/261) by [talyuk](https://github.com/talyuk).
|
|
155
390
|
- All standard webpack entries with the camelCase format are now supported in `shakapacker.yml` in snake_case format. [PR276](https://github.com/shakacode/shakapacker/pull/276) by [ahangarha](https://github.com/ahangarha).
|
|
156
391
|
- The `shakapacker:install` rake task now has an option to force overriding files using `FORCE=true` environment variable [PR311](https://github.com/shakacode/shakapacker/pull/311) by [ahangarha](https://github.com/ahangarha).
|
|
157
392
|
- Allow configuration of use of contentHash for specific environment [PR 234](https://github.com/shakacode/shakapacker/pull/234) by [justin808](https://github/justin808).
|
|
158
393
|
|
|
159
394
|
### Changed
|
|
395
|
+
|
|
160
396
|
- Rename Webpacker to Shakapacker in the entire project including config files, binstubs, environment variables, etc. with a high degree of backward compatibility.
|
|
161
397
|
|
|
162
398
|
This change might be breaking for certain setups and edge cases. More information: [v7 Upgrade Guide](./docs/v7_upgrade.md) [PR157](https://github.com/shakacode/shakapacker/pull/157) by [ahangarha](https://github.com/ahangarha)
|
|
163
399
|
|
|
164
400
|
- Set `source_entry_path` to `packs` and `nested_entries` to `true` in`shakapacker.yml` [PR 284](https://github.com/shakacode/shakapacker/pull/284) by [ahangarha](https://github.com/ahangarha).
|
|
165
401
|
- Dev server configuration is modified to follow [webpack recommended configurations](https://webpack.js.org/configuration/dev-server/) for dev server. [PR276](https://github.com/shakacode/shakapacker/pull/276) by [ahangarha](https://github.com/ahangarha):
|
|
402
|
+
|
|
166
403
|
- Deprecated `https` entry is removed from the default configuration file, allowing to set `server` or `https` as per the project requirements. For more detail, check webpack documentation. The `https` entry can be effective only if there is no `server` entry in the config file.
|
|
167
404
|
- `allowed_hosts` is now set to `auto` instead of `all` by default.
|
|
168
405
|
|
|
@@ -173,6 +410,7 @@ See the [v8 Upgrade Guide](https://github.com/shakacode/shakapacker/blob/main/do
|
|
|
173
410
|
Going forward, the top level directory of static files will be retained so this will necessitate the update of file name references in asset helpers. In the example above, the file sourced from `app/javascript/images/image.png` will be now output to `static/images/image.png` and needs to be referenced as `image_pack_tag("images/image.jpg")` or `image_pack_tag("static/images/image.jpg")`.
|
|
174
411
|
|
|
175
412
|
### Fixed
|
|
413
|
+
|
|
176
414
|
- Move compilation lock file into the working directory. [PR 272](https://github.com/shakacode/shakapacker/pull/272) by [tomdracz](https://github.com/tomdracz).
|
|
177
415
|
- Process `source_entry_path` with values starting with `/` as a relative path to `source_path` [PR 284](https://github.com/shakacode/shakapacker/pull/284) by [ahangarha](https://github.com/ahangarha).
|
|
178
416
|
- Removes defaults passed to `@babel/preset-typescript` to make it possible to have projects with mix of JS and TS code [PR 273](https://github.com/shakacode/shakapacker/pull/273) by [tomdracz](https://github.com/tomdracz).
|
|
@@ -181,16 +419,22 @@ See the [v8 Upgrade Guide](https://github.com/shakacode/shakapacker/blob/main/do
|
|
|
181
419
|
|
|
182
420
|
- Fixed RC version detection during installation. [PR312](https://github.com/shakacode/shakapacker/pull/312) by [ahangarha](https://github.com/ahangarha)
|
|
183
421
|
- Fix addition of webpack-dev-server to devDependencies during installation. [PR310](https://github.com/shakacode/shakapacker/pull/310) by [ahangarha](https://github.com/ahangarha)
|
|
422
|
+
|
|
184
423
|
### Removed
|
|
424
|
+
|
|
185
425
|
- Remove redundant enhancement for precompile task to run `yarn install` [PR 270](https://github.com/shakacode/shakapacker/pull/270) by [ahangarha](https://github.com/ahangarha).
|
|
186
426
|
- Remove deprecated `check_yarn_integrity` from `Shakapacker::Configuration` [PR SP288](https://github.com/shakacode/shakapacker/pull/288) by [ahangarha](https://github.com/ahangarha).
|
|
187
427
|
|
|
188
428
|
## [v6.6.0] - March 7, 2023
|
|
429
|
+
|
|
189
430
|
### Improved
|
|
431
|
+
|
|
190
432
|
- Allow configuration of webpacker.yml through env variable. [PR 254](https://github.com/shakacode/shakapacker/pull/254) by [alecslupu](https://github.com/alecslupu).
|
|
191
433
|
|
|
192
434
|
## [v6.5.6] - February 11, 2023
|
|
435
|
+
|
|
193
436
|
### Fixed
|
|
437
|
+
|
|
194
438
|
- Fixed failing to update `bin/setup` file due to different formats of the file in different versions of Rails. [PR 229](https://github.com/shakacode/shakapacker/pull/229) by [ahangarha](https://github.com/ahangarha).
|
|
195
439
|
|
|
196
440
|
- Upgrade several JS dependencies to fix security issues. [PR 243](https://github.com/shakacode/shakapacker/pull/243) by [ahangarha](https://github.com/ahangarha).
|
|
@@ -204,27 +448,33 @@ See the [v8 Upgrade Guide](https://github.com/shakacode/shakapacker/blob/main/do
|
|
|
204
448
|
## [v6.5.5] - December 28, 2022
|
|
205
449
|
|
|
206
450
|
### Improved
|
|
451
|
+
|
|
207
452
|
- Describe keys different from `webpack-dev-server` in generated `webpacker.yml`. [PR 194](https://github.com/shakacode/shakapacker/pull/194) by [alexeyr](https://github.com/alexeyr).
|
|
208
453
|
- Allow webpack-cli v5 [PR 216](https://github.com/shakacode/shakapacker/pull/216) by [tagliala](https://github.com/tagliala).
|
|
209
454
|
- Allow babel-loader v9 [PR 215](https://github.com/shakacode/shakapacker/pull/215) by [tagliala](https://github.com/tagliala).
|
|
210
455
|
|
|
211
456
|
## [v6.5.4] - November 4, 2022
|
|
457
|
+
|
|
212
458
|
### Fixed
|
|
459
|
+
|
|
213
460
|
- Fixed regression caused by 6.5.3. PR #192 introduce extra split() call. [PR 202](https://github.com/shakacode/shakapacker/pull/202) by [Eric-Guo](https://github.com/Eric-Guo).
|
|
214
461
|
|
|
215
462
|
## [v6.5.3] - November 1, 2022
|
|
216
463
|
|
|
217
464
|
### Improved
|
|
465
|
+
|
|
218
466
|
- Set RAILS_ENV and BUNDLE_GEMFILE env values before requiring `bundler/setup`, `webpacker`, and `webpacker/webpack_runner`. [PR 190](https://github.com/shakacode/shakapacker/pull/190) by [betmenslido](https://github.com/betmenslido).
|
|
219
467
|
- The `mini-css-extract-plugin` may cause various warnings indicating CSS order conflicts when using a [File-System-based automated bundle generation feature](https://www.shakacode.com/react-on-rails/docs/guides/file-system-based-automated-bundle-generation/).
|
|
220
|
-
CSS order warnings can be disabled in projects where CSS ordering has been mitigated by consistent use of scoping or naming conventions. Added `css_extract_ignore_order_warnings` flag to webpacker configuration to disable the order warnings by [pulkitkkr](https://github.com/shakacode/shakapacker/pull/185) in [PR 192](https://github.com/shakacode/shakapacker/pull/192).
|
|
468
|
+
CSS order warnings can be disabled in projects where CSS ordering has been mitigated by consistent use of scoping or naming conventions. Added `css_extract_ignore_order_warnings` flag to webpacker configuration to disable the order warnings by [pulkitkkr](https://github.com/shakacode/shakapacker/pull/185) in [PR 192](https://github.com/shakacode/shakapacker/pull/192).
|
|
221
469
|
|
|
222
470
|
## [v6.5.2] - September 8, 2022
|
|
223
471
|
|
|
224
472
|
### Upgrade
|
|
473
|
+
|
|
225
474
|
Remove the setting of the NODE_ENV in your `bin/webpacker` and `bin/webpacker-dev-server` files per [PR 185](https://github.com/shakacode/shakapacker/pull/185).
|
|
226
475
|
|
|
227
476
|
### Fixed
|
|
477
|
+
|
|
228
478
|
- Changed NODE_ENV defaults to the following and moved from binstubs to the runner. [PR 185](https://github.com/shakacode/shakapacker/pull/185) by [mage1711](https://github.com/mage1711).
|
|
229
479
|
|
|
230
480
|
```
|
|
@@ -234,23 +484,30 @@ ENV["NODE_ENV"] ||= (ENV["RAILS_ENV"] == "production") ? "production" : "develop
|
|
|
234
484
|
## [v6.5.1] - August 15, 2022
|
|
235
485
|
|
|
236
486
|
### Improved
|
|
487
|
+
|
|
237
488
|
- Resolve exact npm package version from lockfiles for constraint checking. [PR 170](https://github.com/shakacode/shakapacker/pull/170) by [G-Rath](https://github.com/G-Rath).
|
|
238
489
|
|
|
239
490
|
### Fixed
|
|
491
|
+
|
|
240
492
|
- `append_javascript_pack_tag` and `append_stylesheet_pack_tag` helpers return `nil` to prevent rendering the queue into view when using `<%= … %>` ERB syntax. [PR 167](https://github.com/shakacode/shakapacker/pull/167) by [ur5us](https://github.com/ur5us). While `<%=` should not be used, it's OK to return nil in case it's misused.
|
|
241
493
|
- Fixed non-runnable test due to wrong code nesting. [PR 173](https://github.com/shakacode/shakapacker/pull/173) by [ur5us](https://github.com/ur5us).
|
|
242
494
|
- Fixed default configurations not working for custom Rails environments [PR 168](https://github.com/shakacode/shakapacker/pull/168) by [ur5us](https://github.com/ur5us).
|
|
243
495
|
- Added accessor method for `nested_entries` configuration. [PR 176](https://github.com/shakacode/shakapacker/pull/176) by [pulkitkkr](https://github.com/pulkitkkr).
|
|
244
496
|
|
|
245
497
|
## [v6.5.0] - July 4, 2022
|
|
498
|
+
|
|
246
499
|
### Added
|
|
500
|
+
|
|
247
501
|
- `append_stylesheet_pack_tag` helper. It helps in configuring stylesheet pack names from the view for a route or partials. It is also required for filesystem-based automated Component Registry API on React on Rails gem. [PR 144](https://github.com/shakacode/shakapacker/pull/144) by [pulkitkkr](https://github.com/pulkitkkr).
|
|
248
502
|
|
|
249
503
|
### Improved
|
|
504
|
+
|
|
250
505
|
- Make sure at most one compilation runs at a time [PR 139](https://github.com/shakacode/shakapacker/pull/139) by [artemave](https://github.com/artemave)
|
|
251
506
|
|
|
252
507
|
## [v6.4.1] - June 5, 2022
|
|
508
|
+
|
|
253
509
|
### Fixed
|
|
510
|
+
|
|
254
511
|
- Restores automatic installation of yarn packages removed in [#131](https://github.com/shakacode/shakapacker/pull/131), with added deprecation notice. [PR 140](https://github.com/shakacode/shakapacker/pull/140) by [tomdracz](https://github.com/tomdracz).
|
|
255
512
|
|
|
256
513
|
This will be again removed in Shakapacker v7 so you need to ensure you are installing yarn packages explicitly before the asset compilation, rather than relying on this behaviour through `asset:precompile` task (e.g. Capistrano deployment).
|
|
@@ -258,13 +515,17 @@ ENV["NODE_ENV"] ||= (ENV["RAILS_ENV"] == "production") ? "production" : "develop
|
|
|
258
515
|
- Disable Spring being used by `rails-erb-loader`. [PR 141](https://github.com/shakacode/shakapacker/pull/141) by [tomdracz](https://github.com/tomdracz).
|
|
259
516
|
|
|
260
517
|
## [v6.4.0] - June 2, 2022
|
|
518
|
+
|
|
261
519
|
### Fixed
|
|
520
|
+
|
|
262
521
|
- Fixed [Issue 123: Rails 7.0.3 - Webpacker configuration file not found when running rails webpacker:install (shakapacker v6.3)](https://github.com/shakacode/shakapacker/issues/123) in [PR 136: Don't enhance precompile if no config #136](https://github.com/shakacode/shakapacker/pull/136) by [justin808](https://github.com/justin808).
|
|
263
522
|
|
|
264
523
|
### Added
|
|
524
|
+
|
|
265
525
|
- Configuration boolean option `nested_entries` to use nested entries. This was the default prior to v6.0. Because entries maybe generated, it's useful to allow a `generated` subdirectory. [PR 121](https://github.com/shakacode/shakapacker/pull/121) by [justin808](https://github.com/justin808).
|
|
266
526
|
|
|
267
527
|
### Improved
|
|
528
|
+
|
|
268
529
|
- Allow v10 of `compression-webpack-plugin` as a peer dependency. [PR 117](https://github.com/shakacode/shakapacker/pull/117) by [aried3r](https://github.com/aried3r).
|
|
269
530
|
|
|
270
531
|
- [Remove assets:precompile task enhancement #131](https://github.com/shakacode/shakapacker/pull/131) by [James Herdman](https://github.com/jherdman): Removed the `yarn:install` Rake task, and no longer enhance `assets:precompile` with said task. These tasks were used to ensure required NPM packages were installed before asset precompilation. Going forward you will need to ensure these packages are already installed yourself. Should you wish to restore this behaviour you'll need to [reimplement the task](https://github.com/shakacode/shakapacker/blob/bee661422f2c902aa8ac9cf8fa1f7ccb8142c914/lib/tasks/yarn.rake) in your own application.
|
|
@@ -272,9 +533,11 @@ ENV["NODE_ENV"] ||= (ENV["RAILS_ENV"] == "production") ? "production" : "develop
|
|
|
272
533
|
## [v6.3.0] - May 19, 2022
|
|
273
534
|
|
|
274
535
|
### Improved
|
|
536
|
+
|
|
275
537
|
- Add ability to configure usage of either last modified timestamp and digest strategies when checking asset freshness. [PR 112](https://github.com/shakacode/shakapacker/pull/112) by [tomdracz](https://github.com/tomdracz).
|
|
276
538
|
|
|
277
539
|
### Fixed
|
|
540
|
+
|
|
278
541
|
- On Windows CSS urls no longer contain backslashes resulting in 404 errors. [PR 115](https://github.com/shakacode/shakapacker/pull/115) by [daniel-rikowski](https://github.com/daniel-rikowski).
|
|
279
542
|
|
|
280
543
|
## [v6.3.0-rc.1] - April 24, 2022
|
|
@@ -282,6 +545,7 @@ ENV["NODE_ENV"] ||= (ENV["RAILS_ENV"] == "production") ? "production" : "develop
|
|
|
282
545
|
Note: [Rubygem is 6.3.0.pre.rc.1](https://rubygems.org/gems/shakapacker/versions/6.3.0.pre.rc.1) and [NPM is 6.3.0-rc.1](https://www.npmjs.com/package/shakapacker/v/6.3.0-rc.1).
|
|
283
546
|
|
|
284
547
|
### Changed
|
|
548
|
+
|
|
285
549
|
- Remove Loose mode from the default @babel-preset/env configuration. [PR 107](https://github.com/shakacode/shakapacker/pull/107) by [Jeremy Liberman](https://github.com/MrLeebo).
|
|
286
550
|
|
|
287
551
|
Loose mode compiles the bundle down to be compatible with ES5, but saves space by skipping over behaviors that are considered edge cases. Loose mode can affect how your code runs in a variety of ways, but in newer versions of Babel it's better to use [Compiler Assumptions](https://babeljs.io/docs/en/assumptions) to have finer-grained control over which edge cases you're choosing to ignore.
|
|
@@ -289,10 +553,12 @@ Note: [Rubygem is 6.3.0.pre.rc.1](https://rubygems.org/gems/shakapacker/versions
|
|
|
289
553
|
This change may increase the file size of your bundles, and may change some behavior in your app if your code touches upon one of the edge cases where Loose mode differs from native JavaScript. There are notes in the linked PR about how to turn Loose mode back on if you need to, but consider migrating to Compiler Assumptions when you can. If you have already customized your babel config, this change probably won't affect you.
|
|
290
554
|
|
|
291
555
|
### Added
|
|
556
|
+
|
|
292
557
|
- Adds `webpacker_precompile` setting to `webpacker.yml` to allow controlling precompile behaviour, similar to existing `ENV["WEBPACKER_PRECOMPILE"]` variable. [PR 102](https://github.com/shakacode/shakapacker/pull/102) by [Judahmeek](https://github.com/Judahmeek).
|
|
293
558
|
- Adds `append_javascript_pack_tag` helper. Allows for easier usage and coordination of multiple javascript packs. [PR 94](https://github.com/shakacode/shakapacker/pull/94) by [tomdracz](https://github.com/tomdracz).
|
|
294
559
|
|
|
295
560
|
### Improved
|
|
561
|
+
|
|
296
562
|
- Use last modified timestamps rather than file digest to determine compiler freshness. [PR 97](https://github.com/shakacode/shakapacker/pull/97) by [tomdracz](https://github.com/tomdracz).
|
|
297
563
|
|
|
298
564
|
Rather than calculating SHA digest of all the files in the paths watched by the compiler, we are now comparing the modified time of the `manifest.json` file versus the latest modified timestamp of files and directories in watched paths. Unlike calculating digest, which only looked at the files, the new calculation also considers directory timestamps, including the parent ones (i.e. `config.source_path` folder timestamp will be checked together will timestamps of all files and directories inside of it).
|
|
@@ -303,18 +569,22 @@ Note: [Rubygem is 6.3.0.pre.rc.1](https://rubygems.org/gems/shakapacker/versions
|
|
|
303
569
|
- Add `webpack-dev-server` as `peerDependency` to make its usage clear. [PR 109](https://github.com/shakacode/shakapacker/pull/109) by [tomdracz](https://github.com/tomdracz).
|
|
304
570
|
|
|
305
571
|
## [v6.2.1] - April 15, 2022
|
|
572
|
+
|
|
306
573
|
### Fixed
|
|
574
|
+
|
|
307
575
|
- Put back config.public_manifest_path, removed in 6.2.0 in PR 78. [PR 104](https://github.com/shakacode/shakapacker/pull/104) by [justin808](https://github.com/justin808).
|
|
308
576
|
|
|
309
577
|
## [v6.2.0] - March 22, 2022
|
|
310
578
|
|
|
311
579
|
### Added
|
|
580
|
+
|
|
312
581
|
- Make manifest_path configurable, to keep manifest.json private if desired. [PR 78](https://github.com/shakacode/shakapacker/pull/78) by [jdelStrother](https://github.com/jdelStrother).
|
|
313
582
|
- Rewrite webpack module rules as regular expressions. Allows for easy iteration during config customization. [PR 60](https://github.com/shakacode/shakapacker/pull/60) by [blnoonan](https://github.com/blnoonan).
|
|
314
583
|
- Initialization check to ensure shakapacker gem and NPM package version are consistent. Opt-in behaviour enabled by setting `ensure_consistent_versioning` configuration variable. [PR 51](https://github.com/shakacode/shakapacker/pull/51) by [tomdracz](https://github.com/tomdracz).
|
|
315
584
|
- Add `dev_server.inline_css: bool` config option to allow for opting out of style-loader and into mini-css-extract-plugin for CSS HMR in development. [PR 69](https://github.com/shakacode/shakapacker/pull/69) by [cheald](https://github.com/cheald).
|
|
316
585
|
|
|
317
586
|
### Improved
|
|
587
|
+
|
|
318
588
|
- Increase default connect timeout for dev server connections, establishing connections more reliably for busy machines. [PR 74](https://github.com/shakacode/shakapacker/pull/74) by [stevecrozz](https://github.com/stevecrozz).
|
|
319
589
|
- Allow multiple invocations of stylesheet_pack_tag (eg for a regular stylesheet & a print stylesheet). [PR 82](https://github.com/shakacode/shakapacker/pull/82) by [jdelStrother](https://github.com/jdelStrother).
|
|
320
590
|
- Tweak swc config for parity with Babel. [PR 79](https://github.com/shakacode/shakapacker/pull/79) by [dleavitt](https://github.com/dleavitt).
|
|
@@ -322,31 +592,39 @@ Note: [Rubygem is 6.3.0.pre.rc.1](https://rubygems.org/gems/shakapacker/versions
|
|
|
322
592
|
## [v6.1.1] - February 6, 2022
|
|
323
593
|
|
|
324
594
|
### Added
|
|
595
|
+
|
|
325
596
|
- Support for esbuild-loader. [PR 53](https://github.com/shakacode/shakapacker/pull/53) by [tomdracz](https://github.com/tomdracz).
|
|
326
597
|
|
|
327
598
|
## [v6.1.0] - February 4, 2022
|
|
599
|
+
|
|
328
600
|
### Added
|
|
601
|
+
|
|
329
602
|
- Support for SWC loader. [PR 29](https://github.com/shakacode/shakapacker/pull/29) by [tomdracz](https://github.com/tomdracz).
|
|
330
603
|
|
|
331
604
|
### Fixed
|
|
605
|
+
|
|
332
606
|
- Static asset subdirectories are retained after compilation, matching Webpacker v5 behaviour. [PR 47](https://github.com/shakacode/shakapacker/pull/47) by [tomdracz](https://github.com/tomdracz). Fixes issues [rails/webpacker#2956](https://github.com/rails/webpacker/issues/2956) which broke in [rails/webpacker#2802](https://github.com/rails/webpacker/pull/2802).
|
|
333
607
|
|
|
334
608
|
## [v6.0.2] - January 25, 2022
|
|
609
|
+
|
|
335
610
|
### Improved
|
|
611
|
+
|
|
336
612
|
- Fix incorrect command name in warning. [PR 33](https://github.com/shakacode/shakapacker/pull/33) by [tricknotes](https://github.com/tricknotes).
|
|
337
613
|
|
|
338
614
|
## [v6.0.1] - January 24, 2022
|
|
615
|
+
|
|
339
616
|
### Improved
|
|
617
|
+
|
|
340
618
|
- PR #21 removed pnp-webpack-plugin as a dev dependency but did not remove it from the peer dependency list. [PR 30](https://github.com/shakacode/shakapacker/pull/30) by [t27duck](https://github.com/t27duck).
|
|
341
619
|
|
|
342
620
|
## [v6.0.0 changes from v6.0.0.rc.6] - January 22, 2022
|
|
343
621
|
|
|
344
622
|
### Improved
|
|
623
|
+
|
|
345
624
|
- Raise on multiple invocations of javascript_pack_tag and stylesheet_pack_tag helpers. [PR 19](https://github.com/shakacode/shakapacker/pull/19) by [tomdracz](https://github.com/tomdracz).
|
|
346
625
|
- Remove automatic addition of node_modules into rails asset load path. [PR 20](https://github.com/shakacode/shakapacker/pull/20) by [tomdracz](https://github.com/tomdracz).
|
|
347
626
|
- Remove pnp-webpack-plugin. [PR 21](https://github.com/shakacode/shakapacker/pull/21) by [tomdracz](https://github.com/tomdracz).
|
|
348
627
|
|
|
349
|
-
|
|
350
628
|
### Merged from rails/webpacker
|
|
351
629
|
|
|
352
630
|
- Make watched_files_digest thread safe. [rails/webpacker #3233](https://github.com/rails/webpacker/pull/3233)
|
|
@@ -354,18 +632,18 @@ Note: [Rubygem is 6.3.0.pre.rc.1](https://rubygems.org/gems/shakapacker/versions
|
|
|
354
632
|
- Switch to peer dependencies. [rails/webpacker #3234](https://github.com/rails/webpacker/pull/3234)
|
|
355
633
|
|
|
356
634
|
### Upgrading from rails/webpacker 6.0.0.rc.6
|
|
635
|
+
|
|
357
636
|
- Single default configuration file of `config/webpack/webpack.config.js`. Previously, the config file was set
|
|
358
637
|
to `config/webpack/#{NODE_ENV}.js`.
|
|
359
638
|
- Changed all package.json dependencies to peerDependencies, so upgrading requires adding the dependencies, per the [UPGRADE GUIDE](./docs/v6_upgrade.md).
|
|
360
639
|
|
|
361
640
|
## [v6.0.0.rc.6 changes from v5.4] - Forked January 16, 2022
|
|
362
641
|
|
|
363
|
-
|
|
364
642
|
- `node_modules` will no longer be babel transformed compiled by default. This primarily fixes [rails issue #35501](https://github.com/rails/rails/issues/35501) as well as [numerous other webpacker issues](https://github.com/rails/webpacker/issues/2131#issuecomment-581618497). The disabled loader can still be required explicitly via:
|
|
365
643
|
|
|
366
644
|
```js
|
|
367
|
-
const nodeModules = require(
|
|
368
|
-
environment.loaders.append(
|
|
645
|
+
const nodeModules = require("@rails/webpacker/rules/node_modules.js")
|
|
646
|
+
environment.loaders.append("nodeModules", nodeModules)
|
|
369
647
|
```
|
|
370
648
|
|
|
371
649
|
- If you have added `environment.loaders.delete('nodeModules')` to your `environment.js`, this must be removed or you will receive an error (`Item nodeModules not found`).
|
|
@@ -378,15 +656,23 @@ Note: [Rubygem is 6.3.0.pre.rc.1](https://rubygems.org/gems/shakapacker/versions
|
|
|
378
656
|
- Deprecated configuration option `watched_paths`. Use `additional_paths` instead in `webpacker.yml`.
|
|
379
657
|
|
|
380
658
|
### Breaking changes
|
|
659
|
+
|
|
381
660
|
- Renamed `/bin/webpack` to `/bin/webpacker` and `/bin/webpack-dev-server` to `bin/webpacker-dev-server` to avoid confusion with underlying webpack executables.
|
|
382
661
|
- Removed integration installers
|
|
383
662
|
- Splitchunks enabled by default
|
|
384
663
|
- CSS extraction enabled by default, except when devServer is configured and running
|
|
385
664
|
|
|
386
665
|
## v5.4.3 and prior changes from rails/webpacker
|
|
666
|
+
|
|
387
667
|
See [CHANGELOG.md in rails/webpacker (up to v5.4.3)](https://github.com/rails/webpacker/blob/master/CHANGELOG.md)
|
|
388
668
|
|
|
389
|
-
[Unreleased]: https://github.com/shakacode/shakapacker/compare/
|
|
669
|
+
[Unreleased]: https://github.com/shakacode/shakapacker/compare/v9.0.0...main
|
|
670
|
+
[v9.0.0]: https://github.com/shakacode/shakapacker/compare/v8.4.0...v9.0.0
|
|
671
|
+
[v8.4.0]: https://github.com/shakacode/shakapacker/compare/v8.3.0...v8.4.0
|
|
672
|
+
[v8.3.0]: https://github.com/shakacode/shakapacker/compare/v8.2.0...v8.3.0
|
|
673
|
+
[v8.2.0]: https://github.com/shakacode/shakapacker/compare/v8.1.0...v8.2.0
|
|
674
|
+
[v8.1.0]: https://github.com/shakacode/shakapacker/compare/v8.0.2...v8.1.0
|
|
675
|
+
[v8.0.2]: https://github.com/shakacode/shakapacker/compare/v8.0.1...v8.0.2
|
|
390
676
|
[v8.0.1]: https://github.com/shakacode/shakapacker/compare/v8.0.0...v8.0.1
|
|
391
677
|
[v8.0.0]: https://github.com/shakacode/shakapacker/compare/v7.2.3...v8.0.0
|
|
392
678
|
[v7.2.3]: https://github.com/shakacode/shakapacker/compare/v7.2.2...v7.2.3
|