using bootstrap with vue webapp : How to customise

百般思念 提交于 2019-11-29 11:11:08

You can make this a lot cleaner by using the npm package and a webpack customisation.

If you first install bootstrap in your project:

npm install bootstrap@4.0.0-alpha.5

and make sure you can use sass-loader in your components:

npm install sass-loader node-sass --save-dev

now go to your webpack config file and add a sassLoader object with the following:

sassLoader: {
    includePaths: [
        path.resolve(projectRoot, 'node_modules/bootstrap/scss/'),
    ],
},

projectRoot should just point to where you can navigate to node_packages from, in my case this is: path.resolve(__dirname, '../')

Now you can use bootstrap directly in your .vue files and webpack will compile it for you when you add the following:

<style lang="scss">
  @import "bootstrap";
</style>

To customise it I'd recommend pulling in the bootstrap _variables first and then you can reference everything like normal, i.e.

@import "_variables";

// example customisation - I'd recommend importing a file here to store them all
$body-bg: $gray-dark;

// just place all your customisation work above the below import of bootstrap
@import "bootstrap";

This will mean you need to remove any CDN CSS versions or they could overwrite things, but you should now be able to fully customise bootstrap.

As another benefit this method allows you to strip out any bootstrap components you are not using. To do so rather than @import "bootstrap"; which is the entire bootstrap library, instead navigate to that file, i.e. node_modules/bootstrap/scss/bootstrap.scss and then copy across the @import's you actually want. Essentially optimising your project...

I tried following approach which worked:

  • cloned the bootstrap repo
  • modified _custom.scss in this directory.
  • ran npm install
  • ran grunt dist as is in documentation
  • copied generated bootstrap css and js files from here in my index.html

so my index.html has following:

<link rel="stylesheet" href="/static/bootstrap.css" type="text/css">

<script src="//cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/tether/1.3.7/js/tether.min.js" integrity="sha384-XTs3FgkjiBgo8qjEjBk0tGmf3wPrWtA6coPfQDfFEY8AnYJwjalXCiosYRBIBZX8" crossorigin="anonymous"></script>
<script href="/static/bootstrap.js"></script>

As of now, I don't think customising is possible when using CDN link of bootstrap.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!