标签: extract-text-plugin

强制编译 CSS 与 Angular 和 Webpack 内联

有没有办法让 Webpack 将已编译的SCSS → CSS文件作为内联样式标记添加到我的 Angular 项目的index.html头部?

目标是在 Angular 忙于引导时设置显示的“正在加载...”页面的样式。为了避免 FOUC,生成的 CSS 文件需要内联注入,作为我的 index.html 头部中的样式标签。这样,一旦加载了index.html,我们就不需要等待另一个网络资源加载来查看我们的预引导样式。

这也可能是在 index.html 页面中内联一个小徽标作为 base64 数据 URI 的一种有价值的方法。

该项目是使用 Angular CLI 创建的,并使用 Angular 4 和 Webpack 2。我使用 webpack.config.js 弹出了 Webpack 配置并对webpack.config.jsng eject进行了少量修改。我几乎只从配置中删除了 LESS 和 Stylus 支持。

这是我的 webpack.config.js 供参考:

const path = require('path');
const ProgressPlugin = require('webpack/lib/ProgressPlugin');
const ProvidePlugin = require('webpack/lib/ProvidePlugin');
const HtmlWebpackPlugin = require('html-webpack-plugin');
const ExtractTextPlugin = require('extract-text-webpack-plugin');
const autoprefixer = require('autoprefixer');
const postcssUrl = …
Run Code Online (Sandbox Code Playgroud)

webpack html-webpack-plugin webpack-2 extract-text-plugin angular

5
推荐指数
1
解决办法
2427
查看次数

类名没有出现 React

不确定我哪里出错了。这是我的用于捆绑客户端的 webpack.prod。但有些类名没有出现在我的 html 中

const path = require('path');
const webpack = require('webpack');
const dependencies = require('./package.json');
const ManifestPlugin = require('webpack-manifest-plugin');
const CleanWebpackPlugin = require('clean-webpack-plugin');
const ExtractTextPlugin = require('extract-text-webpack-plugin');

const VENDOR_LIBS = [];
Object.entries(dependencies.dependencies).forEach(([key, value]) => {
  VENDOR_LIBS.push(key);
});

const BrowserConfig = {
  entry: {
    bundle: './src/index',
    vendor: VENDOR_LIBS,
  },
  output: {
    path: path.resolve('./dist'),
    publicPath: '/',
    filename: '[name].js',
    pathinfo: true,
  },
  resolve: {
    extensions: ['.js', '.jsx', '.json', '.scss', '.css'],
  },
  module: {
    rules: [
      {
        use: ['react-hot-loader/webpack', 'babel-loader'],
        test: /\.(js|jsx)$/,
        exclude: …
Run Code Online (Sandbox Code Playgroud)

javascript reactjs webpack extract-text-plugin

5
推荐指数
1
解决办法
5926
查看次数

提取文本插件'加载器使用没有相应的插件' - React,Sass,Webpack

我正在尝试在我的React + Webpack项目上运行SASS编译并继续遇到此错误:

Module build failed: Error: "extract-text-webpack-plugin" loader is used without the corresponding plugin
Run Code Online (Sandbox Code Playgroud)

遵循本教程中的指导原则:链接

这是我的webpack.config.js

有什么建议?

const debug = process.env.NODE_ENV !== "production";
const webpack = require('webpack');
const path = require('path');
const ExtractTextPlugin = require("extract-text-webpack-plugin");

module.exports = {
  context: path.join(__dirname, "src"),
  devtool: debug ? "inline-sourcemap" : null,
  entry: "./js/client.js",
  module: {
    loaders: [
      {
        test: /\.jsx?$/,
        exclude: /(node_modules|bower_components)/,
        loader: 'babel-loader',
        query: {
          presets: ['react', 'es2015', 'stage-0'],
          plugins: ['react-html-attrs', 'transform-class-properties', 'transform-decorators-legacy'],
        }
      },
      {
          test: /\.scss$/,
          loader: ExtractTextPlugin.extract('css!sass')
      } …
Run Code Online (Sandbox Code Playgroud)

sass reactjs webpack extract-text-plugin

4
推荐指数
1
解决办法
3352
查看次数

Webpack 同时运行 .LESS 和 .SCSS 编译。提取文本插件不适用于一个捆绑文件

我需要在同一个项目输出中同时运行 LESS 和 SCSS 编译以分离 CSS 文件。

该项目基于 LESS,但现在在过渡阶段添加了 SCSS。

暂时不想更新webpack。Webpack 运行良好,但会生成 common.bundle.js 文件,但并未从这一包中提取 CSS。

它提取的其他块和新 SCSS 可以,但不是核心包文件 (common.bundle.js)。

我曾尝试更改 webpack.config.js 中的顺序,但这无济于事。我也看到了这个“多个实例”,但无法解决。

webpack.config.js

const path = require('path');
const webpack = require('webpack');
const CommonsChunkPlugin = require("webpack/lib/optimize/CommonsChunkPlugin");
var ExtractTextPlugin = require("extract-text-webpack-plugin");


module.exports = {
    devtool: "source-map",
    entry: {
        "login.bundle": "./dash/app/login.js",
        "summary.bundle": "./dash/app/summary.js",
        "metrics.bundle": "./dash/app/metrics.js",
        "market_share.bundle": "./dash/app/market_share.js",
        "broker.bundle": "./dash/app/broker.js",
        "event_studies_custom.bundle": "./dash/app/event_studies_custom.js",
        "case_studies.bundle": "./dash/app/case_studies.js",
        "home.bundle": "./dash/app/home.js"
    },
    output: {
        path: __dirname + '/dash/static/js',
        filename: "[name].js"
    },
    module: {
        loaders: [{
            test: require.resolve("jquery"), …
Run Code Online (Sandbox Code Playgroud)

javascript sass less webpack extract-text-plugin

3
推荐指数
1
解决办法
3437
查看次数

Webpack 2 ExtractTextPlugin CSS源图覆盖babel 6 JS源图

编辑:发布此问题后不久找到了解决方案.请参阅下面的我的答案


我有一个基于webpack 2的项目,它使用ExtractTextPlugin将SCSS/CSS拉出到一个单独的文件中.

另外,我在webpack(vendorapp)中定义了两个入口点,它们构建到我的JS包中.

出于某种原因,ExtractTextPlugin似乎打破了为应用程序包生成的源图app.js.map.如果我查看源图,它指向提取的CSS文件中的随机行,而不是JS.

查看源图文件本身,我只看到"sources"下面列出的CSS和SCSS文件(下面的简短示例):

{"version":3,"sources":["webpack:///webpack:///~/icon-font/package/styles/ficon.css","webpack:///webpack:///~/styles/package/styles/_imports.scss","webpack:///webpack:///~/styles/package/styles/includes/_variables.scss","webpack:///webpack:///~/styles/package/styles/includes/_mixins-utilities.scss", .....
Run Code Online (Sandbox Code Playgroud)

但是,如果我ExtractTextPlugin在webpack配置中注释掉,我会在源代码中列出JS文件:

{"version":3,"sources":["webpack:///app-552b3935c142f5001484.js","webpack:///./src/lib/Globals.js","webpack:///./src/actions/AdActions.js", ....
Run Code Online (Sandbox Code Playgroud)

所以不确定这里发生了什么......看起来有点像ExtractTextPlugin破坏或覆盖应用程序包的源图?

以下是我在webpack配置中定义的所有相关插件的方法:

{
  entry: {
    vendors: [
      'react',
      'react-dom',
      'react-redux',
    ],
    app: path.resolve(__dirname, './../src/client.js'),
  },
  output: {
    path: path.resolve(__dirname, './../dist/assets/'),
    filename: '[name]-[chunkhash].js',
    sourceMapFilename: '[name]-[chunkhash].js.map',
  },
  cache: false,
  devtool: 'source-map',
  module: {
    rules: [
      {
        test: /\.(scss|sass|css)$/,
        loader: ExtractTextPlugin.extract({
          loader: [
            'css?sourceMap',
            'postcss-loader',
            'sass?sourceMap'
          ],
        }),
      },
      {
        test: /\.js$/,
        loader: 'babel-loader',
        include: [path.join(__dirname, '../src')], …
Run Code Online (Sandbox Code Playgroud)

uglifyjs source-maps webpack webpack-2 extract-text-plugin

2
推荐指数
1
解决办法
1256
查看次数

从 webpack 多个入口点获取一个 css 文件

我的项目使用 webpack。我有两个入口点:第一个用于带有 CSS 模块的 CSS 文件,第二个用于全局 css 文件。Main.css 不是从项目中的任何文件导入的,所以我为它创建了一个特殊的入口点。

const extractStylesCss = new ExtractTextPlugin('styles.css');  

entry: {
    'main': ["./src/index.tsx"],
    'styles': "./src/main.css"
},
module: {
    loaders: [ 
        {
            test: /^.*\.css$/,
            exclude: [
                path.join(__dirname, 'src/main.css')
            ],

            loader: extractStylesCss.extract(
                "style",
                `css?modules&importLoaders=2&localIdentName=[local]___[hash:base64:5]___${pjson.version}!typed-css-modules!postcss?pack=pure&sourceMap=inline`
            )
        },
        {
            test: /main\.css$/,
            loader: extractStylesCss.extract('style', 'css!postcss?pack=pure&sourceMap=inline')
        },
    ]
},
plugins: [
    extractStylesCss
],
output: {
    path: path.join(__dirname, "/docs"),
    filename: "[name].js"
}
Run Code Online (Sandbox Code Playgroud)

我只需要一个输出文件——styles.css。我知道 ExtractTextPlugin 为每个入口点生成一个包,但是否有可能获得一个文件?

webpack extract-text-plugin

1
推荐指数
1
解决办法
1965
查看次数