在 rails 5.1 上安装 Yarn bootstrap@4.0.0-alpha.6

install with Yarn bootstrap@4.0.0-alpha.6 on rails 5.1

我正在关注这个 tutorials for install Bootstrap with Yarn this was the command for the new version of Bootstrap 4 on rails 5.1 who watch here:

yarn add bootstrap@4.0.0-alpha.6

所以我注意到它安装了 bootstrap 4 alpha 6、JQuery3 和 Tether。 所以它已经被添加到 .gitignore 中:

/node_modules
/yarn-error.log

并且已经在我的 config/initializers/assets.rb

中设置好了
Rails.application.config.assets.paths << Rails.root.join('node_modules')

我需要穿上我的 application.js

//= require rails-ujs
//= require turbolinks
//= require bootstrap/dist/js/bootstrap
//= require_tree .

在我的application.scss

/*
 *= require bootstrap/dist/css/bootstrap
 *= require_tree .
 *= require_self
 */

请问上班需要穿application.js和application.scss、JQuery和Tether吗?怎么样?

我正在尝试这个: application.js

//= require rails-ujs
//= require turbolinks
//= require bootstrap/dist/js/bootstrap
//= require jquery/dist/jquery
//= require tether/dist/js/tether
//= require_tree .

application.scss

/*
 *= require bootstrap/dist/css/bootstrap
 *= require tether/dist/css/tether
 *= require_tree .
 *= require_self
 */

我没有放 *= require jquery/dist/jquery,因为没有这个文件夹 distilled/css,就像 JQuery 的其他文件夹一样。 是用Yarn安装的配置吗?

这是我的:tree node_modules

node_modules
├── bootstrap
│   ├── CHANGELOG.md
│   ├── Gruntfile.js
│   ├── LICENSE
│   ├── README.md
│   ├── dist
│   │   ├── css
│   │   │   ├── bootstrap-grid.css
│   │   │   ├── bootstrap-grid.css.map
│   │   │   ├── bootstrap-grid.min.css
│   │   │   ├── bootstrap-grid.min.css.map
│   │   │   ├── bootstrap-reboot.css
│   │   │   ├── bootstrap-reboot.css.map
│   │   │   ├── bootstrap-reboot.min.css
│   │   │   ├── bootstrap-reboot.min.css.map
│   │   │   ├── bootstrap.css
│   │   │   ├── bootstrap.css.map
│   │   │   ├── bootstrap.min.css
│   │   │   └── bootstrap.min.css.map
│   │   └── js
│   │       ├── bootstrap.js
│   │       └── bootstrap.min.js
│   ├── grunt
│   │   ├── change-version.js
│   │   ├── configBridge.json
│   │   ├── gcp-key.json.enc
│   │   ├── npm-shrinkwrap.json
│   │   ├── postcss.js
│   │   ├── sauce_browsers.yml
│   │   └── upload-preview.sh
│   ├── js
│   │   ├── dist
│   │   │   ├── alert.js
│   │   │   ├── button.js
│   │   │   ├── carousel.js
│   │   │   ├── collapse.js
│   │   │   ├── dropdown.js
│   │   │   ├── modal.js
│   │   │   ├── popover.js
│   │   │   ├── scrollspy.js
│   │   │   ├── tab.js
│   │   │   ├── tooltip.js
│   │   │   └── util.js
│   │   ├── src
│   │   │   ├── alert.js
│   │   │   ├── button.js
│   │   │   ├── carousel.js
│   │   │   ├── collapse.js
│   │   │   ├── dropdown.js
│   │   │   ├── modal.js
│   │   │   ├── popover.js
│   │   │   ├── scrollspy.js
│   │   │   ├── tab.js
│   │   │   ├── tooltip.js
│   │   │   └── util.js
│   │   └── tests
│   │       ├── README.md
│   │       ├── unit
│   │       │   ├── alert.js
│   │       │   ├── button.js
│   │       │   ├── carousel.js
│   │       │   ├── collapse.js
│   │       │   ├── dropdown.js
│   │       │   ├── modal.js
│   │       │   ├── phantom.js
│   │       │   ├── popover.js
│   │       │   ├── scrollspy.js
│   │       │   ├── tab.js
│   │       │   └── tooltip.js
│   │       └── vendor
│   │           └── qunit.js
│   ├── package.json
│   └── scss
│       ├── _alert.scss
│       ├── _badge.scss
│       ├── _breadcrumb.scss
│       ├── _button-group.scss
│       ├── _buttons.scss
│       ├── _card.scss
│       ├── _carousel.scss
│       ├── _close.scss
│       ├── _code.scss
│       ├── _custom-forms.scss
│       ├── _custom.scss
│       ├── _dropdown.scss
│       ├── _forms.scss
│       ├── _grid.scss
│       ├── _images.scss
│       ├── _input-group.scss
│       ├── _jumbotron.scss
│       ├── _list-group.scss
│       ├── _media.scss
│       ├── _mixins.scss
│       ├── _modal.scss
│       ├── _nav.scss
│       ├── _navbar.scss
│       ├── _normalize.scss
│       ├── _pagination.scss
│       ├── _popover.scss
│       ├── _print.scss
│       ├── _progress.scss
│       ├── _reboot.scss
│       ├── _responsive-embed.scss
│       ├── _tables.scss
│       ├── _tooltip.scss
│       ├── _transitions.scss
│       ├── _type.scss
│       ├── _utilities.scss
│       ├── _variables.scss
│       ├── bootstrap-grid.scss
│       ├── bootstrap-reboot.scss
│       ├── bootstrap.scss
│       ├── mixins
│       │   ├── _alert.scss
│       │   ├── _background-variant.scss
│       │   ├── _badge.scss
│       │   ├── _border-radius.scss
│       │   ├── _breakpoints.scss
│       │   ├── _buttons.scss
│       │   ├── _cards.scss
│       │   ├── _clearfix.scss
│       │   ├── _float.scss
│       │   ├── _forms.scss
│       │   ├── _gradients.scss
│       │   ├── _grid-framework.scss
│       │   ├── _grid.scss
│       │   ├── _hover.scss
│       │   ├── _image.scss
│       │   ├── _list-group.scss
│       │   ├── _lists.scss
│       │   ├── _nav-divider.scss
│       │   ├── _navbar-align.scss
│       │   ├── _pagination.scss
│       │   ├── _reset-text.scss
│       │   ├── _resize.scss
│       │   ├── _screen-reader.scss
│       │   ├── _size.scss
│       │   ├── _table-row.scss
│       │   ├── _text-emphasis.scss
│       │   ├── _text-hide.scss
│       │   ├── _text-truncate.scss
│       │   ├── _transforms.scss
│       │   └── _visibility.scss
│       └── utilities
│           ├── _align.scss
│           ├── _background.scss
│           ├── _borders.scss
│           ├── _clearfix.scss
│           ├── _display.scss
│           ├── _flex.scss
│           ├── _float.scss
│           ├── _position.scss
│           ├── _screenreaders.scss
│           ├── _sizing.scss
│           ├── _spacing.scss
│           ├── _text.scss
│           └── _visibility.scss
├── jquery
│   ├── AUTHORS.txt
│   ├── LICENSE.txt
│   ├── README.md
│   ├── bower.json
│   ├── dist
│   │   ├── core.js
│   │   ├── jquery.js
│   │   ├── jquery.min.js
│   │   ├── jquery.min.map
│   │   ├── jquery.slim.js
│   │   ├── jquery.slim.min.js
│   │   └── jquery.slim.min.map
│   ├── external
│   │   └── sizzle
│   │       ├── LICENSE.txt
│   │       └── dist
│   │           ├── sizzle.js
│   │           ├── sizzle.min.js
│   │           └── sizzle.min.map
│   ├── package.json
│   └── src
│       ├── ajax
│       │   ├── jsonp.js
│       │   ├── load.js
│       │   ├── parseXML.js
│       │   ├── script.js
│       │   ├── var
│       │   │   ├── location.js
│       │   │   ├── nonce.js
│       │   │   └── rquery.js
│       │   └── xhr.js
│       ├── ajax.js
│       ├── attributes
│       │   ├── attr.js
│       │   ├── classes.js
│       │   ├── prop.js
│       │   ├── support.js
│       │   └── val.js
│       ├── attributes.js
│       ├── callbacks.js
│       ├── core
│       │   ├── DOMEval.js
│       │   ├── access.js
│       │   ├── init.js
│       │   ├── nodeName.js
│       │   ├── parseHTML.js
│       │   ├── ready-no-deferred.js
│       │   ├── ready.js
│       │   ├── readyException.js
│       │   ├── stripAndCollapse.js
│       │   ├── support.js
│       │   └── var
│       │       └── rsingleTag.js
│       ├── core.js
│       ├── css
│       │   ├── addGetHookIf.js
│       │   ├── adjustCSS.js
│       │   ├── curCSS.js
│       │   ├── hiddenVisibleSelectors.js
│       │   ├── showHide.js
│       │   ├── support.js
│       │   └── var
│       │       ├── cssExpand.js
│       │       ├── getStyles.js
│       │       ├── isHiddenWithinTree.js
│       │       ├── rmargin.js
│       │       ├── rnumnonpx.js
│       │       └── swap.js
│       ├── css.js
│       ├── data
│       │   ├── Data.js
│       │   └── var
│       │       ├── acceptData.js
│       │       ├── dataPriv.js
│       │       └── dataUser.js
│       ├── data.js
│       ├── deferred
│       │   └── exceptionHook.js
│       ├── deferred.js
│       ├── deprecated.js
│       ├── dimensions.js
│       ├── effects
│       │   ├── Tween.js
│       │   └── animatedSelector.js
│       ├── effects.js
│       ├── event
│       │   ├── ajax.js
│       │   ├── alias.js
│       │   ├── focusin.js
│       │   ├── support.js
│       │   └── trigger.js
│       ├── event.js
│       ├── exports
│       │   ├── amd.js
│       │   └── global.js
│       ├── jquery.js
│       ├── manipulation
│       │   ├── _evalUrl.js
│       │   ├── buildFragment.js
│       │   ├── getAll.js
│       │   ├── setGlobalEval.js
│       │   ├── support.js
│       │   ├── var
│       │   │   ├── rcheckableType.js
│       │   │   ├── rscriptType.js
│       │   │   └── rtagName.js
│       │   └── wrapMap.js
│       ├── manipulation.js
│       ├── offset.js
│       ├── queue
│       │   └── delay.js
│       ├── queue.js
│       ├── selector-native.js
│       ├── selector-sizzle.js
│       ├── selector.js
│       ├── serialize.js
│       ├── traversing
│       │   ├── findFilter.js
│       │   └── var
│       │       ├── dir.js
│       │       ├── rneedsContext.js
│       │       └── siblings.js
│       ├── traversing.js
│       ├── var
│       │   ├── ObjectFunctionString.js
│       │   ├── arr.js
│       │   ├── class2type.js
│       │   ├── concat.js
│       │   ├── document.js
│       │   ├── documentElement.js
│       │   ├── fnToString.js
│       │   ├── getProto.js
│       │   ├── hasOwn.js
│       │   ├── indexOf.js
│       │   ├── pnum.js
│       │   ├── push.js
│       │   ├── rcssNum.js
│       │   ├── rnothtmlwhite.js
│       │   ├── slice.js
│       │   ├── support.js
│       │   └── toString.js
│       └── wrap.js
└── tether
    ├── CHANGELOG.md
    ├── CONTRIBUTING.md
    ├── LICENSE
    ├── README.md
    ├── bower.json
    ├── component.json
    ├── dist
    │   ├── css
    │   │   ├── tether-theme-arrows-dark.css
    │   │   ├── tether-theme-arrows-dark.min.css
    │   │   ├── tether-theme-arrows.css
    │   │   ├── tether-theme-arrows.min.css
    │   │   ├── tether-theme-basic.css
    │   │   ├── tether-theme-basic.min.css
    │   │   ├── tether.css
    │   │   └── tether.min.css
    │   └── js
    │       ├── tether.js
    │       └── tether.min.js
    ├── docs
    │   ├── 1-Overview
    │   │   ├── 1-why_you_should_use_tether.md
    │   │   ├── 2-repositioning.md
    │   │   └── 3-why_we_dont_support_IE_8.md
    │   ├── 2-Examples
    │   │   ├── 1-list_of_examples.md
    │   │   └── 2-projects_using_tether.md
    │   ├── 3-Advanced
    │   │   ├── 1-embedding_tether.md
    │   │   └── 2-extending_tether.md
    │   ├── coffee
    │   │   └── intro.coffee
    │   ├── css
    │   │   └── intro.css
    │   ├── intro.md
    │   ├── js
    │   │   ├── intro.js
    │   │   └── markAttachment.js
    │   ├── sass
    │   │   └── intro.sass
    │   └── welcome
    │       ├── browser-demo.html
    │       ├── coffee
    │       │   └── welcome.coffee
    │       ├── css
    │       │   ├── browser-demo.css
    │       │   ├── prism.css
    │       │   └── welcome.css
    │       ├── index.html
    │       ├── js
    │       │   ├── drop.js
    │       │   ├── jquery.js
    │       │   ├── log.js
    │       │   ├── tether-v0.1.3.js
    │       │   └── welcome.js
    │       └── sass
    │           ├── _inline-block.sass
    │           ├── browser-demo.sass
    │           └── welcome.sass
    ├── examples
    │   ├── chosen
    │   │   ├── chosen-sprite.png
    │   │   ├── chosen-sprite@2x.png
    │   │   ├── chosen.css
    │   │   ├── chosen.js
    │   │   └── index.html
    │   ├── common
    │   │   └── css
    │   │       └── style.css
    │   ├── content-visible
    │   │   └── index.html
    │   ├── dolls
    │   │   ├── dolls.css
    │   │   ├── dolls.js
    │   │   └── index.html
    │   ├── element-scroll
    │   │   └── index.html
    │   ├── enable-disable
    │   │   └── index.html
    │   ├── facebook
    │   │   ├── facebook.css
    │   │   └── index.html
    │   ├── out-of-bounds
    │   │   └── index.html
    │   ├── pin
    │   │   └── index.html
    │   ├── resources
    │   │   ├── css
    │   │   │   └── base.css
    │   │   └── js
    │   │       ├── jquery.js
    │   │       └── log.js
    │   ├── scroll
    │   │   └── index.html
    │   ├── simple
    │   │   └── index.html
    │   ├── testbed
    │   │   └── index.html
    │   ├── tooltip
    │   │   └── index.html
    │   └── viewport
    │       ├── colors.css
    │       └── index.html
    ├── gulpfile.js
    ├── package.json
    └── src
        ├── css
        │   ├── helpers
        │   │   ├── _tether-theme-arrows.sass
        │   │   ├── _tether-theme-basic.sass
        │   │   └── _tether.sass
        │   ├── mixins
        │   │   ├── _inline-block.sass
        │   │   └── _pie-clearfix.sass
        │   ├── tether-theme-arrows-dark.sass
        │   ├── tether-theme-arrows.sass
        │   ├── tether-theme-basic.sass
        │   └── tether.sass
        └── js
            ├── abutment.js
            ├── constraint.js
            ├── markAttachment.js
            ├── shift.js
            ├── tether.js
            └── utils.js

80 directories, 346 files

您需要 Jquery 才能使 Bootstrap 的 javascript 相关功能正常运行。我相信只有在使用工具提示等 Bootstrap 组件时才需要 Tether。

application.js 中的顺序很重要。 Jquery,如果需要Tether,需要在Bootstrap之前加载。

//= require rails-ujs
//= require turbolinks
//= require jquery/dist/jquery
//= require tether/dist/js/tether
//= require bootstrap/dist/js/bootstrap
//= require_tree .