Merge pull request #5159 from consuldemocracy/npm_packages

Allow adding Node packages as dependencies
This commit is contained in:
Javi Martín
2023-10-18 14:53:48 +02:00
committed by GitHub
17 changed files with 120 additions and 58 deletions

View File

@@ -24,6 +24,7 @@ public/tenants/*/sitemap.xml
public/assets/ public/assets/
public/machine_learning/data/ public/machine_learning/data/
public/tenants/*/machine_learning/data/ public/tenants/*/machine_learning/data/
node_modules/
# Bundler config, cache and gemsets # Bundler config, cache and gemsets
**/.bundle/ **/.bundle/

View File

@@ -5,3 +5,8 @@ updates:
schedule: schedule:
interval: monthly interval: monthly
open-pull-requests-limit: 50 open-pull-requests-limit: 50
- package-ecosystem: npm
directory: "/"
schedule:
interval: monthly
open-pull-requests-limit: 50

View File

@@ -42,7 +42,10 @@ jobs:
- name: Setup NPM - name: Setup NPM
uses: actions/setup-node@v3 uses: actions/setup-node@v3
with: with:
cache: "npm"
node-version-file: ".node-version" node-version-file: ".node-version"
- name: Install node packages
run: npm clean-install
- name: Copy secrets and database files - name: Copy secrets and database files
run: for i in config/*.example; do cp "$i" "${i/.example}"; done run: for i in config/*.example; do cp "$i" "${i/.example}"; done
- name: Setup database - name: Setup database

1
.gitignore vendored
View File

@@ -26,6 +26,7 @@ tmp/
/public/assets/ /public/assets/
/public/machine_learning/data/ /public/machine_learning/data/
/public/tenants/*/machine_learning/data/ /public/tenants/*/machine_learning/data/
/node_modules/
# Bundler config, cache and gemsets # Bundler config, cache and gemsets
.bundle/ .bundle/

View File

@@ -23,6 +23,7 @@ tests:
- bundle --without development - bundle --without development
- bundle exec rake db:setup - bundle exec rake db:setup
- bundle exec rake assets:precompile > /dev/null 2>&1 - bundle exec rake assets:precompile > /dev/null 2>&1
- npm clean-install
- bin/knapsack_pro_rspec - bin/knapsack_pro_rspec
artifacts: artifacts:
when: on_failure when: on_failure

View File

@@ -5,6 +5,7 @@ require "capistrano/setup"
require "capistrano/deploy" require "capistrano/deploy"
require "capistrano/bundler" require "capistrano/bundler"
require "capistrano/npm"
require "capistrano/rails/assets" require "capistrano/rails/assets"
require "capistrano/rails/migrations" require "capistrano/rails/migrations"
#require "capistrano/passenger" #require "capistrano/passenger"

View File

@@ -51,6 +51,9 @@ RUN curl -sL https://github.com/nodenv/node-build/archive/master.tar.gz | tar xz
COPY Gemfile* ./ COPY Gemfile* ./
RUN bundle install RUN bundle install
COPY package* ./
RUN npm install
# Copy the Rails application into place # Copy the Rails application into place
COPY . . COPY . .

View File

@@ -33,8 +33,6 @@ gem "image_processing", "~> 1.12.2"
gem "initialjs-rails", "~> 0.2.0.9" gem "initialjs-rails", "~> 0.2.0.9"
gem "invisible_captcha", "~> 2.1.0" gem "invisible_captcha", "~> 2.1.0"
gem "jquery-fileupload-rails" gem "jquery-fileupload-rails"
gem "jquery-rails", "~> 4.6.0"
gem "jquery-ui-rails", "~> 6.0.1"
gem "kaminari", "~> 1.2.2" gem "kaminari", "~> 1.2.2"
gem "leaflet-rails", "~> 1.9.3" gem "leaflet-rails", "~> 1.9.3"
gem "mini_magick", "~> 4.12.0" gem "mini_magick", "~> 4.12.0"
@@ -96,6 +94,7 @@ end
group :development do group :development do
gem "capistrano", "~> 3.17.3", require: false gem "capistrano", "~> 3.17.3", require: false
gem "capistrano-bundler", "~> 2.1.0", require: false gem "capistrano-bundler", "~> 2.1.0", require: false
gem "capistrano-npm", "~> 1.0.3", require: false
gem "capistrano-rails", "~> 1.6.3", require: false gem "capistrano-rails", "~> 1.6.3", require: false
gem "capistrano3-delayed-job", "~> 1.7.6" gem "capistrano3-delayed-job", "~> 1.7.6"
gem "capistrano3-puma", "~> 5.2.0" gem "capistrano3-puma", "~> 5.2.0"

View File

@@ -120,6 +120,8 @@ GEM
sshkit (>= 1.9.0) sshkit (>= 1.9.0)
capistrano-bundler (2.1.0) capistrano-bundler (2.1.0)
capistrano (~> 3.1) capistrano (~> 3.1)
capistrano-npm (1.0.3)
capistrano (>= 3.0.0)
capistrano-rails (1.6.3) capistrano-rails (1.6.3)
capistrano (~> 3.1) capistrano (~> 3.1)
capistrano-bundler (>= 1.1, < 3) capistrano-bundler (>= 1.1, < 3)
@@ -285,12 +287,6 @@ GEM
actionpack (>= 3.1) actionpack (>= 3.1)
railties (>= 3.1) railties (>= 3.1)
sassc sassc
jquery-rails (4.6.0)
rails-dom-testing (>= 1, < 3)
railties (>= 4.2.0)
thor (>= 0.14, < 2.0)
jquery-ui-rails (6.0.1)
railties (>= 3.2.16)
json (2.6.3) json (2.6.3)
jwt (2.7.1) jwt (2.7.1)
kaminari (1.2.2) kaminari (1.2.2)
@@ -692,6 +688,7 @@ DEPENDENCIES
cancancan (~> 3.5.0) cancancan (~> 3.5.0)
capistrano (~> 3.17.3) capistrano (~> 3.17.3)
capistrano-bundler (~> 2.1.0) capistrano-bundler (~> 2.1.0)
capistrano-npm (~> 1.0.3)
capistrano-rails (~> 1.6.3) capistrano-rails (~> 1.6.3)
capistrano3-delayed-job (~> 1.7.6) capistrano3-delayed-job (~> 1.7.6)
capistrano3-puma (~> 5.2.0) capistrano3-puma (~> 5.2.0)
@@ -724,8 +721,6 @@ DEPENDENCIES
initialjs-rails (~> 0.2.0.9) initialjs-rails (~> 0.2.0.9)
invisible_captcha (~> 2.1.0) invisible_captcha (~> 2.1.0)
jquery-fileupload-rails jquery-fileupload-rails
jquery-rails (~> 4.6.0)
jquery-ui-rails (~> 6.0.1)
kaminari (~> 1.2.2) kaminari (~> 1.2.2)
knapsack_pro (~> 5.7.0) knapsack_pro (~> 5.7.0)
launchy (~> 2.5.2) launchy (~> 2.5.2)

View File

@@ -43,13 +43,8 @@ Prerequisites: install git, Ruby 3.1.4, CMake, pkg-config, shared-mime-info, Nod
```bash ```bash
git clone https://github.com/consuldemocracy/consuldemocracy.git git clone https://github.com/consuldemocracy/consuldemocracy.git
cd consuldemocracy cd consuldemocracy
bundle install bin/setup
cp config/database.yml.example config/database.yml
cp config/secrets.yml.example config/secrets.yml
bin/rake db:create
bin/rake db:migrate
bin/rake db:dev_seed bin/rake db:dev_seed
RAILS_ENV=test rake db:setup
``` ```
Run the app locally: Run the app locally:

View File

@@ -41,13 +41,8 @@ Prerequisitos: tener instalado git, Ruby 3.1.4, CMake, pkg-config, shared-mime-i
```bash ```bash
git clone https://github.com/consuldemocracy/consuldemocracy.git git clone https://github.com/consuldemocracy/consuldemocracy.git
cd consuldemocracy cd consuldemocracy
bundle install bin/setup
cp config/database.yml.example config/database.yml
cp config/secrets.yml.example config/secrets.yml
bin/rake db:create
bin/rake db:migrate
bin/rake db:dev_seed bin/rake db:dev_seed
RAILS_ENV=test rake db:setup
``` ```
Para ejecutar la aplicación en local: Para ejecutar la aplicación en local:

View File

@@ -10,35 +10,46 @@
// Read Sprockets README (https://github.com/rails/sprockets#sprockets-directives) for details // Read Sprockets README (https://github.com/rails/sprockets#sprockets-directives) for details
// about supported directives. // about supported directives.
// //
//= require jquery3 //= require jquery
//= require jquery_ujs //= require jquery-ujs
//= require jquery-ui/widgets/datepicker //= require jquery-ui/ui/version
//= require jquery-ui/i18n/datepicker-ar //= require jquery-ui/ui/data
//= require jquery-ui/i18n/datepicker-bs //= require jquery-ui/ui/ie
//= require jquery-ui/i18n/datepicker-cs //= require jquery-ui/ui/keycode
//= require jquery-ui/i18n/datepicker-da //= require jquery-ui/ui/position
//= require jquery-ui/i18n/datepicker-de //= require jquery-ui/ui/safe-active-element
//= require jquery-ui/i18n/datepicker-el //= require jquery-ui/ui/scroll-parent
//= require jquery-ui/i18n/datepicker-es //= require jquery-ui/ui/unique-id
//= require jquery-ui/i18n/datepicker-fa //= require jquery-ui/ui/widget
//= require jquery-ui/i18n/datepicker-fr //= require jquery-ui/ui/widgets/menu
//= require jquery-ui/i18n/datepicker-gl //= require jquery-ui/ui/widgets/mouse
//= require jquery-ui/i18n/datepicker-he //= require jquery-ui/ui/widgets/datepicker
//= require jquery-ui/i18n/datepicker-hr //= require jquery-ui/ui/i18n/datepicker-ar
//= require jquery-ui/i18n/datepicker-id //= require jquery-ui/ui/i18n/datepicker-bs
//= require jquery-ui/i18n/datepicker-it //= require jquery-ui/ui/i18n/datepicker-cs
//= require jquery-ui/i18n/datepicker-nl //= require jquery-ui/ui/i18n/datepicker-da
//= require jquery-ui/i18n/datepicker-pl //= require jquery-ui/ui/i18n/datepicker-de
//= require jquery-ui/i18n/datepicker-pt-BR //= require jquery-ui/ui/i18n/datepicker-el
//= require jquery-ui/i18n/datepicker-ru //= require jquery-ui/ui/i18n/datepicker-es
//= require jquery-ui/i18n/datepicker-sl //= require jquery-ui/ui/i18n/datepicker-fa
//= require jquery-ui/i18n/datepicker-sq //= require jquery-ui/ui/i18n/datepicker-fr
//= require jquery-ui/i18n/datepicker-sv //= require jquery-ui/ui/i18n/datepicker-gl
//= require jquery-ui/i18n/datepicker-zh-CN //= require jquery-ui/ui/i18n/datepicker-he
//= require jquery-ui/i18n/datepicker-zh-TW //= require jquery-ui/ui/i18n/datepicker-hr
//= require jquery-ui/i18n/datepicker-en-GB //= require jquery-ui/ui/i18n/datepicker-id
//= require jquery-ui/widgets/autocomplete //= require jquery-ui/ui/i18n/datepicker-it
//= require jquery-ui/widgets/sortable //= require jquery-ui/ui/i18n/datepicker-nl
//= require jquery-ui/ui/i18n/datepicker-pl
//= require jquery-ui/ui/i18n/datepicker-pt-BR
//= require jquery-ui/ui/i18n/datepicker-ru
//= require jquery-ui/ui/i18n/datepicker-sl
//= require jquery-ui/ui/i18n/datepicker-sq
//= require jquery-ui/ui/i18n/datepicker-sv
//= require jquery-ui/ui/i18n/datepicker-zh-CN
//= require jquery-ui/ui/i18n/datepicker-zh-TW
//= require jquery-ui/ui/i18n/datepicker-en-GB
//= require jquery-ui/ui/widgets/autocomplete
//= require jquery-ui/ui/widgets/sortable
//= require jquery-fileupload/basic //= require jquery-fileupload/basic
//= require foundation //= require foundation
//= require turbolinks //= require turbolinks

View File

@@ -7,9 +7,10 @@
@import "font-awesome/path"; @import "font-awesome/path";
@import "font-awesome/mixins"; @import "font-awesome/mixins";
@import "font-awesome/core"; @import "font-awesome/core";
@import "jquery-ui/autocomplete"; @import "jquery-ui/themes/base/theme";
@import "jquery-ui/datepicker"; @import "jquery-ui/themes/base/autocomplete";
@import "jquery-ui/sortable"; @import "jquery-ui/themes/base/datepicker";
@import "jquery-ui/themes/base/sortable";
@import "leaflet"; @import "leaflet";
@import "foundation_and_overrides"; @import "foundation_and_overrides";

View File

@@ -17,13 +17,21 @@ FileUtils.chdir APP_ROOT do
system! "gem install bundler --conservative" system! "gem install bundler --conservative"
system("bundle check") || system!("bundle install") system("bundle check") || system!("bundle install")
# puts "\n== Copying sample files ==" # Install JavaScript dependencies
# unless File.exist?('config/database.yml') system!("npm install")
# FileUtils.cp 'config/database.yml.sample', 'config/database.yml'
# end puts "\n== Copying sample files =="
unless File.exist?("config/database.yml")
FileUtils.cp "config/database.yml.example", "config/database.yml"
end
unless File.exist?("config/secrets.yml")
FileUtils.cp "config/secrets.yml.example", "config/secrets.yml"
end
puts "\n== Preparing database ==" puts "\n== Preparing database =="
system! "bin/rails db:prepare" system! "bin/rails db:prepare"
system! "RAILS_ENV=test bin/rails db:prepare"
puts "\n== Removing old logs and tempfiles ==" puts "\n== Removing old logs and tempfiles =="
system! "bin/rails log:clear tmp:clear" system! "bin/rails log:clear tmp:clear"

View File

@@ -117,6 +117,8 @@ module Consul
config.assets.paths << Rails.root.join("app", "assets", "fonts") config.assets.paths << Rails.root.join("app", "assets", "fonts")
config.assets.paths << Rails.root.join("vendor", "assets", "fonts") config.assets.paths << Rails.root.join("vendor", "assets", "fonts")
config.assets.paths << Rails.root.join("node_modules", "jquery-ui", "themes", "base")
config.assets.paths << Rails.root.join("node_modules")
# Add lib to the autoload path # Add lib to the autoload path
config.autoload_paths << Rails.root.join("lib") config.autoload_paths << Rails.root.join("lib")

33
package-lock.json generated Normal file
View File

@@ -0,0 +1,33 @@
{
"name": "consuldemocracy",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "consuldemocracy",
"dependencies": {
"jquery": "^3.6.0",
"jquery-ui": "^1.12.1",
"jquery-ujs": "^1.2.2"
}
},
"node_modules/jquery": {
"version": "3.6.0",
"resolved": "https://registry.npmjs.org/jquery/-/jquery-3.6.0.tgz",
"integrity": "sha512-JVzAR/AjBvVt2BmYhxRCSYysDsPcssdmTFnzyLEts9qNwmjmu4JTAMYubEfwVOSwpQ1I1sKKFcxhZCI2buerfw=="
},
"node_modules/jquery-ui": {
"version": "1.12.1",
"resolved": "https://registry.npmjs.org/jquery-ui/-/jquery-ui-1.12.1.tgz",
"integrity": "sha512-K/kDBMXkTky5LH+gqbMvttU1ipqCTaecKyAFjwHjUnPTVfm5I5PZC7We31iNR3yWtAHNqoxkLoit06lR/gKVlA=="
},
"node_modules/jquery-ujs": {
"version": "1.2.2",
"resolved": "https://registry.npmjs.org/jquery-ujs/-/jquery-ujs-1.2.2.tgz",
"integrity": "sha512-8AlF0ww/8mDdrT/Z2Nmv16r9LI2Xw/H3LiHNpPJYp4gnk/zIAfJTnhLcBRm6FZqQ/bWfW/rPl6j16lhO35DvOg==",
"dependencies": {
"jquery": ">=1.8.0"
}
}
}
}

8
package.json Normal file
View File

@@ -0,0 +1,8 @@
{
"name": "consuldemocracy",
"dependencies": {
"jquery": "^3.6.0",
"jquery-ui": "^1.12.1",
"jquery-ujs": "^1.2.2"
}
}