如何在另一台机器上使用Webpacker和React设置Rails项目



我有一个Rails 6项目,我正在按照《使用Rails 5.1进行敏捷Web开发》一书进行,我正在使用Circle CI进行构建和测试。我基本上会在帖子的末尾列出我所有的问题。

以下是我在circle.yml中安装webpacker的部分

- run:
name: Install webpacker
command: bundle exec rails webpacker:install

在我们安装React之前,一切都很好。我们已经使用rails webpacker:install:react安装了React。安装React后,我将代码推送到GitHub,然后CircleCI开始构建环境,但当它试图安装webpacker时,我得到了以下冲突:

conflict  config/webpacker.yml
rails aborted!rs/burak/git/agile-rails/config/webpacker.yml? (enter "h" for help) [Ynaqdhm]

如果我说";是";对此。

╰─$ rails webpacker:install
Warning: you are using an unstable release of Node.js (v15.14.0). If you encounter issues with Node.js, consider switching to an Active LTS release. More info: https://docs.npmjs.com/try-the-latest-stable-version-of-node
conflict  config/webpacker.yml
Overwrite /Users/burak/git/test/agile-rails/config/webpacker.yml? (enter "h" for help) [Ynaqdhm] Y
force  config/webpacker.yml
Copying webpack core config
exist  config/webpack
identical  config/webpack/development.js
identical  config/webpack/environment.js
identical  config/webpack/production.js
identical  config/webpack/test.js
Copying postcss.config.js to app root directory
identical  postcss.config.js
Copying babel.config.js to app root directory
conflict  babel.config.js
Overwrite /Users/burak/git/test/agile-rails/babel.config.js? (enter "h" for help) [Ynaqdhm] Y
force  babel.config.js
Copying .browserslistrc to app root directory
identical  .browserslistrc
The JavaScript app source directory already exists
apply  /Users/burak/.rvm/gems/ruby-2.7.3/gems/webpacker-5.2.1/lib/install/binstubs.rb
Copying binstubs
exist    bin
identical    bin/webpack
identical    bin/webpack-dev-server
File unchanged! The supplied flag value not found!  .gitignore
Installing all JavaScript dependencies [5.2.1]
run  yarn add @rails/webpacker@5.2.1 from "."
yarn add v1.22.10
warning package-lock.json found. Your project contains lock files generated by tools other than Yarn. It is advised not to mix package managers in order to avoid resolution inconsistencies caused by unsynchronized lock files. To clear this warning, remove package-lock.json.
[1/4] 🔍  Resolving packages...
[2/4] 🚚  Fetching packages...
[3/4] 🔗  Linking dependencies...
warning " > @babel/preset-react@7.13.13" has unmet peer dependency "@babel/core@^7.0.0-0".
warning "@babel/preset-react > @babel/plugin-transform-react-display-name@7.12.13" has unmet peer dependency "@babel/core@^7.0.0-0".
warning "@babel/preset-react > @babel/plugin-transform-react-jsx@7.13.12" has unmet peer dependency "@babel/core@^7.0.0-0".
warning "@babel/preset-react > @babel/plugin-transform-react-jsx-development@7.12.17" has unmet peer dependency "@babel/core@^7.0.0-0".
warning "@babel/preset-react > @babel/plugin-transform-react-pure-annotations@7.12.1" has unmet peer dependency "@babel/core@^7.0.0-0".
warning "@babel/preset-react > @babel/plugin-transform-react-jsx > @babel/plugin-syntax-jsx@7.12.13" has unmet peer dependency "@babel/core@^7.0.0-0".
warning " > webpack-dev-server@3.11.2" has unmet peer dependency "webpack@^4.0.0 || ^5.0.0".
warning "webpack-dev-server > webpack-dev-middleware@3.7.3" has unmet peer dependency "webpack@^4.0.0 || ^5.0.0".
[4/4] 🔨  Building fresh packages...
[-/3] ⠈ waiting...
success Saved 0 new dependencies.
✨  Done in 50.91s.
Installing dev server for live reloading
run  yarn add --dev webpack-dev-server from "."
yarn add v1.22.10
warning package-lock.json found. Your project contains lock files generated by tools other than Yarn. It is advised not to mix package managers in order to avoid resolution inconsistencies caused by unsynchronized lock files. To clear this warning, remove package-lock.json.
[1/4] 🔍  Resolving packages...
[2/4] 🚚  Fetching packages...
[3/4] 🔗  Linking dependencies...
warning " > @babel/preset-react@7.13.13" has unmet peer dependency "@babel/core@^7.0.0-0".
warning "@babel/preset-react > @babel/plugin-transform-react-display-name@7.12.13" has unmet peer dependency "@babel/core@^7.0.0-0".
warning "@babel/preset-react > @babel/plugin-transform-react-jsx@7.13.12" has unmet peer dependency "@babel/core@^7.0.0-0".
warning "@babel/preset-react > @babel/plugin-transform-react-jsx-development@7.12.17" has unmet peer dependency "@babel/core@^7.0.0-0".
warning "@babel/preset-react > @babel/plugin-transform-react-pure-annotations@7.12.1" has unmet peer dependency "@babel/core@^7.0.0-0".
warning "@babel/preset-react > @babel/plugin-transform-react-jsx > @babel/plugin-syntax-jsx@7.12.13" has unmet peer dependency "@babel/core@^7.0.0-0".
warning "webpack-dev-server > webpack-dev-middleware@3.7.3" has unmet peer dependency "webpack@^4.0.0 || ^5.0.0".
warning " > webpack-dev-server@3.11.2" has unmet peer dependency "webpack@^4.0.0 || ^5.0.0".
[4/4] 🔨  Building fresh packages...
success Saved 1 new dependency.
info Direct dependencies
└─ webpack-dev-server@3.11.2
info All dependencies
└─ webpack-dev-server@3.11.2
✨  Done in 1.30s.
Webpacker successfully installed 🎉 🍰

因此,如果我说";是";以覆盖,据我所知。如果我说";否";如果要覆盖,则一切正常。

  1. 在另一台机器上运行rails webpacker:install有意义吗?这个命令不是只是为项目而不是为机器安装webpacker吗?

  2. 而不是运行CCD_ 5然后说";否";为了覆盖,我也可以做rails assets:precompile,这很有效。我需要使用哪个命令才能在另一台机器上成功地使用Webpacker和React设置Rails项目,或者有人能告诉我正确的设置方法吗?

  1. 是的,当您在CI计算机上运行rails webpacker:install时,您正试图再次为此项目安装webpacker
  2. 是的,您需要在另一台机器上运行rails assets:precompile。它所做的是将您的所有资产编译用于生产,而不是开发用途,这正是您在非开发机器(CI、暂存、生产(上想要的

最新更新