加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

twitter-bootstrap – 如何通过webpack 2从bootstrap 4中仅导入

发布时间:2020-12-17 20:42:25 所属栏目:安全 来源:网络整理
导读:我正在使用Webpack 2和Bootstrap 4.我想只使用整个包中的一个Modal组件. 可能吗?我试图从js / dist / modal导入它,但我有一个例外:无法在bootstrap中解析导出 目前我提供了类似供应商依赖的引导程序,但我的供应商文件非常大(350 kb).我想只捆绑我正在使用
我正在使用Webpack 2和Bootstrap 4.我想只使用整个包中的一个Modal组件.

可能吗?我试图从js / dist / modal导入它,但我有一个例外:无法在bootstrap中解析导出

目前我提供了类似供应商依赖的引导程序,但我的供应商文件非常大(350 kb).我想只捆绑我正在使用的组件.

HEre是我的webpack.common.js

let process = require("process"),path = require("path"),webpack = require("webpack"),helpers = require("./helpers"),glob = require("glob"),poststylus = require('poststylus'),HtmlWebpackPlugin = require("html-webpack-plugin"),ExtractTextPlugin = require("extract-text-webpack-plugin"),CopyWebpackPlugin = require("copy-webpack-plugin"),SpritesmithPlugin = require('webpack-spritesmith'),srcName = "src";

const getEntry = () => {
    let res = [
        helpers.root(srcName,"index.js")
    ];

    if (process.env.NODE_ENV === "development") {
        res = [
            'react-hot-loader/patch','webpack-dev-server/client?http://localhost:5000','webpack/hot/only-dev-server'
        ].concat(res);
    }

    return res;
};

const getStylLoader = () => {
    let res = {
        test: /.styl$/,exclude: /node_modules/,loader: "style-loader!css-loader?modules=false!stylus-loader"
    };

    if (process.env.NODE_ENV === "production") {
        res = Object.assign({},res,{loader: ExtractTextPlugin.extract({
                                                                                    fallbackLoader: "style-loader",loader: "css-loader?modules=false&minimize=true!stylus-loader"
                                                                                })
        })
    }

    return res;

};


module.exports = {
    entry : {
        "vendor" : ["react","react-dom","react-router","redux","react-router-redux","jquery","bootstrap/dist/js/bootstrap.min.js"],"app" : getEntry()
    },context : helpers.root(srcName),resolve : {

        modules : [
            "web_modules","node_modules","spritesmith-generated",helpers.root(srcName)
        ],extensions: ['.js','.styl','.css']

    },module : {
        rules : [
            {
                enforce : 'pre',test : /.jsx?$/,loader : 'eslint-loader',options : {
                    fix : true,},include : helpers.root(srcName),exclude: helpers.root(srcName,"routes.js")
            },{
                test : /.jsx?$/,loaders : [
                    'babel-loader',],include: [ helpers.root(srcName),"node_modules/bootstrap"],exclude : /node_modules/
            },{
                test : /.css$/,loaders : [
                    'style-loader','css-loader?modules=true&minimize=true',getStylLoader(),{test: /.png$/,loaders: [
                'file-loader?name=i/[hash].[ext]'
            ]},{
                test: /.svg$/,loader: 'babel-loader!svg-react-loader'
            }
        ],plugins : [


        new webpack.ProvidePlugin({
            jQuery : "jquery",$: "jquery",jquery : "jquery",Tether: "tether","window.Tether": "tether",Alert: "exports?Alert!bootstrap/js/dist/alert",Button: "exports?Button!bootstrap/js/dist/button",Carousel: "exports?Carousel!bootstrap/js/dist/carousel",Collapse: "exports?Collapse!bootstrap/js/dist/collapse",Dropdown: "exports?Dropdown!bootstrap/js/dist/dropdown",Modal: "exports?Modal!bootstrap/js/dist/modal",Popover: "exports?Popover!bootstrap/js/dist/popover",Scrollspy: "exports?Scrollspy!bootstrap/js/dist/scrollspy",Tab: "exports?Tab!bootstrap/js/dist/tab",Tooltip: "exports?Tooltip!bootstrap/js/dist/tooltip",Util: "exports?Util!bootstrap/js/dist/util"
        }),new webpack.LoaderOptionsPlugin({
            options : {
                context: helpers.root(srcName),output: { path :  "./" },stylus: {
                    use: [poststylus([ 'autoprefixer' ])]
                },eslint : {
                    configFile : '.eslintrc',failOnWarning : false,failOnError : false
                }
            }
        }),new SpritesmithPlugin({
            src: {
                cwd: helpers.root(srcName,"assets/images/icons"),glob: '*.png'
            },target: {
                image: helpers.root(srcName,"assets/images/spritesmith_generated/sprite.png"),css: helpers.root(srcName,'assets/images/spritesmith_generated/sprite.styl')
            },apiOptions: {
                cssImageRef: "../images/spritesmith_generated/sprite.png"
            }
        })

    ],};

以下是我尝试使用它的方法
App.component.js

const a = require("bootstrap/js/dist/modal");

console.log(a); //I want to pass some jquery element later for Modal and handle it if the exported function will be exist

解决方法

在这个阶段,它似乎不支持Javascript模块.此问题似乎是在跟踪问题:

https://github.com/twbs/bootstrap/issues/19017

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读