UNPKG

@rails/webpacker

Version:

Use Webpack to manage app-like JavaScript modules in Rails

322 lines (215 loc) 10.3 kB
## [3.0.2] - 2017-10-04 ### Added - Allow dev server connect timeout (in seconds) to be configurable, default: 0.01 ```rb # Change to 1s Webpacker.dev_server.connect_timeout = 1 ``` - Restrict the source maps generated in production [#770](https://github.com/rails/webpacker/pull/770) - Binstubs [#833](https://github.com/rails/webpacker/pull/833) - Allow dev server settings to be overriden by env variables [#843](https://github.com/rails/webpacker/pull/843) - A new `lookup` method to manifest to perform lookup without raise and return `nil` ```rb Webpacker.manifest.lookup('foo.js') # => nil Webpacker.manifest.lookup!('foo.js') # => raises Webpacker::Manifest::MissingEntryError ``` - Catch all exceptions in `DevServer.running?` and return false [#878](https://github.com/rails/webpacker/pull/878) ### Removed - Inline CLI args for dev server binstub, use env variables instead - Coffeescript as core dependency. You have to manually add coffeescript now, if you are using it in your app. ```bash yarn add coffeescript@1.12.7 # OR coffeescript 2.0 yarn add coffeescript ``` ## [3.0.1] - 2017-09-01 ### Fixed - Missing `node_modules/.bin/*` files by bumping minimum Yarn version to 0.25.2 [#727](https://github.com/rails/webpacker/pull/727) - `webpacker:compile` task so that fails properly when webpack compilation fails [#728](https://github.com/rails/webpacker/pull/728) - Rack dev server proxy middleware when served under another proxy (example: pow), which uses `HTTP_X_FORWARDED_HOST` header resulting in `404` for webpacker assets - Make sure tagged logger works with rails < 5 [#716](https://github.com/rails/webpacker/pull/716) ### Added - Allow webpack dev server listen host/ip to be configurable using additional `--listen-host` option ```bash ./bin/webpack-dev-server --listen-host 0.0.0.0 --host localhost ``` ### Removed - `watchContentBase` from devServer config so it doesn't unncessarily trigger live reload when manifest changes. If you have applied this workaround from [#724](https://github.com/rails/webpacker/issues/724), please revert the change from `config/webpack/development.js` since this is now fixed. ## [3.0.0] - 2017-08-30 ### Added - `resolved_paths` option to allow adding additional paths webpack should lookup when resolving modules ```yml # config/webpacker.yml # Additional paths webpack should lookup modules resolved_paths: [] # empty by default ``` - `Webpacker::Compiler.fresh?` and `Webpacker::Compiler.stale?` answer the question of whether compilation is needed. The old `Webpacker::Compiler.compile?` predicate is deprecated. - Dev server config class that exposes config options through singleton. ```rb Webpacker.dev_server.running? ``` - Rack middleware proxies webpacker requests to dev server so we can always serve from same-origin and the lookup works out of the box - no more paths prefixing - `env` attribute on `Webpacker::Compiler` allows setting custom environment variables that the compilation is being run with ```rb Webpacker::Compiler.env['FRONTEND_API_KEY'] = 'your_secret_key' ``` ### Breaking changes **Note:** requires running `bundle exec rails webpacker:install` `config/webpack/**/*.js`: - The majority of this config moved to the [@rails/webpacker npm package](https://www.npmjs.com/package/@rails/webpacker). `webpacker:install` only creates `config/webpack/{environment,development,test,production}.js` now so if you're upgrading from a previous version you can remove all other files. `webpacker.yml`: - Move dev-server config options under defaults so it's transparently available in all environments - Add new `HMR` option for hot-module-replacement - Add HTTPS ### Removed - Host info from manifest.json, now looks like this: ```json { "hello_react.js": "/packs/hello_react.js" } ``` ### Fixed - Update `webpack-dev-server.tt` to respect RAILS_ENV and NODE_ENV values [#502](https://github.com/rails/webpacker/issues/502) - Use `0.0.0.0` as default listen address for `webpack-dev-server` - Serve assets using `localhost` from dev server - [#424](https://github.com/rails/webpacker/issues/424) ```yml dev_server: host: localhost ``` - On Windows, `ruby bin/webpacker` and `ruby bin/webpacker-dev-server` will now bypass yarn, and execute via `node_modules/.bin` directly - [#584](https://github.com/rails/webpacker/pull/584) ### Breaking changes - Add `compile` and `cache_path` options to `config/webpacker.yml` for configuring lazy compilation of packs when a file under tracked paths is changed [#503](https://github.com/rails/webpacker/pull/503). To enable expected behavior, update `config/webpacker.yml`: ```yaml default: &default cache_path: tmp/cache/webpacker test: compile: true development: compile: true production: compile: false ``` - Make test compilation cacheable and configurable so that the lazy compilation only triggers if files are changed under tracked paths. Following paths are watched by default - ```rb ["app/javascript/**/*", "yarn.lock", "package.json", "config/webpack/**/*"] ``` To add more paths: ```rb # config/initializers/webpacker.rb or config/application.rb Webpacker::Compiler.watched_paths << 'bower_components' ``` ## [2.0] - 2017-05-24 ### Fixed - Update `.babelrc` to fix compilation issues - [#306](https://github.com/rails/webpacker/issues/306) - Duplicated asset hosts - [#320](https://github.com/rails/webpacker/issues/320), [#397](https://github.com/rails/webpacker/pull/397) - Missing asset host when defined as a `Proc` or on `ActionController::Base.asset_host` directly - [#397](https://github.com/rails/webpacker/pull/397) - Incorrect asset host when running `webpacker:compile` or `bin/webpack` in development mode - [#397](https://github.com/rails/webpacker/pull/397) - Update `webpacker:compile` task to use `stdout` and `stderr` for better logging - [#395](https://github.com/rails/webpacker/issues/395) - ARGV support for `webpack-dev-server` - [#286](https://github.com/rails/webpacker/issues/286) ### Added - [Elm](http://elm-lang.org) support. You can now add Elm support via the following methods: - New app: `rails new <app> --webpack=elm` - Within an existing app: `rails webpacker:install:elm` - Support for custom `public_output_path` paths independent of `source_entry_path` in `config/webpacker.yml`. `output` is also now relative to `public/`. - [#397](https://github.com/rails/webpacker/pull/397) Before (compile to `public/packs`): ```yaml source_entry_path: packs public_output_path: packs ``` After (compile to `public/sweet/js`): ```yaml source_entry_path: packs public_output_path: sweet/js ``` - `https` option to use `https` mode, particularly on platforms like - https://community.c9.io/t/running-a-rails-app/1615 or locally - [#176](https://github.com/rails/webpacker/issues/176) - [Babel] Dynamic import() and Class Fields and Static Properties babel plugin to `.babelrc` ```json { "presets": [ ["env", { "modules": false, "targets": { "browsers": "> 1%", "uglify": true }, "useBuiltIns": true }] ], "plugins": [ "syntax-dynamic-import", "transform-class-properties", { "spec": true } ] } ``` - Source-map support for production bundle #### Breaking Change - Consolidate and flatten `paths.yml` and `development.server.yml` config into one file - `config/webpacker.yml` - [#403](https://github.com/rails/webpacker/pull/403). This is a breaking change and requires you to re-install webpacker and cleanup old configuration files. ```bash bundle update webpacker bundle exec rails webpacker:install # Remove old/unused configuration files rm config/webpack/paths.yml rm config/webpack/development.server.yml rm config/webpack/development.server.js ``` __Warning__: For now you also have to add a pattern in `.gitignore` by hand. ```diff /public/packs +/public/packs-test /node_modules ``` ## [1.2] - 2017-04-27 Some of the changes made requires you to run below commands to install new changes. ``` bundle update webpacker bundle exec rails webpacker:install ``` ### Fixed - Support Spring - [#205](https://github.com/rails/webpacker/issues/205) ```ruby Spring.after_fork { Webpacker.bootstrap } if defined?(Spring) ``` - Check node version and yarn before installing webpacker - [#217](https://github.com/rails/webpacker/issues/217) - Include webpacker helper to views - [#172](https://github.com/rails/webpacker/issues/172) - Webpacker installer on windows - [#245](https://github.com/rails/webpacker/issues/245) - Yarn duplication - [#278](https://github.com/rails/webpacker/issues/278) - Add back Spring for `rails-erb-loader` - [#216](https://github.com/rails/webpacker/issues/216) - Move babel presets and plugins to .babelrc - [#202](https://github.com/rails/webpacker/issues/202) ### Added - A changelog - [#211](https://github.com/rails/webpacker/issues/211) - Minimize CSS assets - [#218](https://github.com/rails/webpacker/issues/218) - Pack namespacing support - [#201](https://github.com/rails/webpacker/pull/201) For example: ``` app/javascript/packs/admin/hello_vue.js app/javascript/packs/admin/hello.vue app/javascript/packs/hello_vue.js app/javascript/packs/hello.vue ``` - Add tree-shaking support - [#250](https://github.com/rails/webpacker/pull/250) - Add initial test case by @kimquy [#259](https://github.com/rails/webpacker/pull/259) - Compile assets before test:controllers and test:system ### Removed - Webpack watcher - [#295](https://github.com/rails/webpacker/pull/295) ## [1.1] - 2017-03-24 This release requires you to run below commands to install new features. ``` bundle update webpacker bundle exec rails webpacker:install # if installed react, vue or angular bundle exec rails webpacker:install:[react, angular, vue] ``` ### Added (breaking changes) - Static assets support - [#153](https://github.com/rails/webpacker/pull/153) - Advanced webpack configuration - [#153](https://github.com/rails/webpacker/pull/153) ### Removed ```rb config.x.webpacker[:digesting] = true ```