【问题标题】:Webpack loader as externalWebpack 加载器作为外部
【发布时间】:2018-06-13 06:02:31
【问题描述】:

我在 npm 上将 React 组件作为 webpack 包发布,我遵循库指南并使用 externalswebpack-node-externals 告诉 webpack 不要捆绑组件所依赖的库(例如 React)。我的包现在相当小,但我注意到样式加载器仍然存在,有没有办法告诉 webpack 不要捆绑 style-loader 并依赖将导入我的库/组件的项目的 style-loader

【问题讨论】:

    标签: reactjs webpack webpack-2


    【解决方案1】:
        webpack.config.js
    
       "use strict";
        var webpack = require('webpack');
        var path = require('path');
        var loaders = require('./webpack/loaders');
        var HtmlWebpackPlugin = require('html-webpack-plugin');
        var DashboardPlugin = require('webpack-dashboard/plugin');
        var ExtractTextPlugin = require('extract-text-webpack-plugin');
    
        const HOST = process.env.HOST || "127.0.0.1";
        const PORT = process.env.PORT || "5000";
    
        const paths = {
          SRC:path.resolve(__dirname,'src'),
          HOT_RELOADER:'react-hot-loader/patch'
        }
    
        module.exports = {
          entry: [
            // your app's entry point
            paths.HOT_RELOADER,
            path.join(paths.SRC,'index.jsx')
          ],
          devtool: process.env.WEBPACK_DEVTOOL || 'eval-source-map',
          output: {
            publicPath: '/',
            path: path.join(__dirname, 'public'),
            filename: 'bundle.js'
          },
          resolve: {
            extensions: ['.js', '.jsx']
          },
          module: {
            rules : loaders
          },
          devServer: {
            contentBase: "./public",
            // do not print bundle build stats
            noInfo: true,
            // enable HMR
            hot: true,
            // embed the webpack-dev-server runtime into the bundle
            inline: true,
            // serve index.html in place of 404 responses to allow HTML5 history
            historyApiFallback: true,
            port: PORT,
            host: HOST
          },
          plugins: [
            new webpack.NoEmitOnErrorsPlugin(),
            new webpack.NamedModulesPlugin(),
            new webpack.HotModuleReplacementPlugin(),
            new ExtractTextPlugin({
              filename: 'style.css',
              allChunks: true
            }),
            new DashboardPlugin(),
            new HtmlWebpackPlugin({
              template: './src/index.html',
              files: {
                css: ['style.css'],
                js: ["bundle.js"],
              }
            }),
            new webpack.EnvironmentPlugin({
              NODE_ENV: 'development', // use 'development' unless process.env.NODE_ENV is defined
            })
          ]
        };
    
    
    
     // loaders.js - used as external loader
     module.exports = [
          {
            test: /\.(js|jsx)$/,
            exclude: /(node_modules|bower_components)/,
            use: ['babel-loader']  
          },
          {
            test: /\.scss$/,
            exclude: ['node_modules'],
            use: ['style-loader', 'css-loader?importLoaders=1', 'sass-loader'],
          },
          {
            test: /\.css$/,
            use: ['style-loader', 'css-loader']
          },
          {
            test: /\.eot(\?v=\d+\.\d+\.\d+)?$/,
            use: ['file-loader']
          },
          {
            test: /\.(woff|woff2)$/,
            use: ['url-loader']
          },
          {
            test: /\.ttf(\?v=\d+\.\d+\.\d+)?$/,
            use: ['url-loader?limit=10000&mimetype=application/octet-stream']
          },
          {
            test: /\.svg(\?v=\d+\.\d+\.\d+)?$/,
            use: ['url-loader?limit=10000&mimetype=image/svg+xml']
          },
          {
            test: /\.gif/,
            use: ['url-loader?limit=10000&mimetype=image/gif']
          },
          {
            test: /\.jpg/,
            use: ['url-loader?limit=10000&mimetype=image/jpg']
          },
          {
            test: /\.png/,
            use: ['url-loader?limit=10000&mimetype=image/png']
          }
        ]
    

    【讨论】:

    • 它将在外部定义所有加载器并优化您的包大小。
    猜你喜欢
    • 1970-01-01
    • 2020-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-11
    • 1970-01-01
    相关资源
    最近更新 更多