【问题标题】:Webpack 4 Having Trouble with LessWebpack 4 遇到麻烦
【发布时间】:2018-03-07 16:14:20
【问题描述】:

我是使用 webpack 的新手,我只是想让它在一个新的空 .net core web 项目中处理 typescript 和 less 文件,并将相应的 js 和 css 文件输出到指定的文件夹。

我已经设法使用awesome-typescript-loader 使打字稿正常工作。但是,我无法让更少的加载器正常工作。

我一直在使用 webpack 的 less-loader documentation。但是,它总是在构建输出中抛出以下错误:

C:\workspace\fakeproject\node_modules\webpack\lib\Chunk.js:460
1>      throw new Error(
1>        ^
1>EXEC : error : Chunk.entrypoints: Use Chunks.groupsIterable and filter by instanceof Entrypoint instead

这是我的 package.json:

{
  "version": "1.0.0",
  "name": "asp.net",
  "private": true,
  "devDependencies": {
    "awesome-typescript-loader": "^5.0.0-0",
    "css-loader": "^0.28.10",
    "extract-text-webpack-plugin": "^3.0.2",
    "less-loader": "^4.0.6",
    "style-loader": "^0.20.2",
    "typescript": "^2.7.2",
    "webpack": "^4.1.0",
    "yarn": "^1.5.1"
  },
  "scripts": {
    "build:Debug": "webpack --config webpack.dev.config.js",
    "build:Release": "webpack --config webpack.prod.config.js"
  }
}

还有我的 webpack.dev.config.js:

"use strict"
{
    const path = require('path');
    const outputFolder = "wwwroot/dist/";

    const ExtractTextPlugin = require("extract-text-webpack-plugin");

    const extractLess = new ExtractTextPlugin({
        filename: "[name].[contenthash].css"
    });

    module.exports = {
        "mode": "development",
        "entry": {
            "styles": "./Styles/main.less",
            "scripts": "./Scripts/main.ts",
        },
        "output": {
            "path": path.resolve(__dirname, outputFolder),
            "filename": "[name].js",
        },
        "resolve": {
            "extensions": ['.ts', '.tsx', '.js']
        },
        "devtool": "source-map",
        "module": {
            "rules": [
                {
                    test: /\.less$/,
                    use: extractLess.extract({
                        use: [{
                            loader: "css-loader"
                        }, {
                            loader: "less-loader"
                        }],
                        fallback: "style-loader"
                    })
                },
                {
                    "test": /\.tsx?$/,
                    "loader": 'awesome-typescript-loader',
                    "exclude": /node_modules/,
                }
            ]
        },
        plugins: [
            extractLess
        ]
    };
}

我使用以下脚本在项目上设置了构建后事件:

npm run-script build:$(ConfigurationName)

我的 main.less 文件简单如下:

@light-green: #42f49e;

body {
    background-color: @light-green;
}

我做错了什么或使用了错误版本的依赖项?提前感谢您的帮助。

【问题讨论】:

  • 你选择了一个糟糕的时机开始使用 webpack。问题不在于您的代码。你使用的插件还不支持 webpack 4。尝试将 webpack 降级到 3.x
  • 其实,让我写一个正确的答案

标签: webpack .net-core less extract-text-plugin less-loader


【解决方案1】:

问题不在于您的代码。
Webpack 刚刚更新到第 4 版,很多插件仍然有点落后。 突破性的变化还是不大,所以这应该很快解决。在此之前,最好留在 3.x 上

不过,对于您的情况,已经有一个支持 webpack 4 的 extract-text-webpack-plugin 版本。
你可以安装它。
npm install extract-text-webpack-plugin@next

【讨论】:

  • 谢谢,我会尽快试一试。降级似乎确实导致了另一个错误,并希望我为 webpack-cli 安装另一个依赖项来执行脚本,然后在调整我的脚本以使用它之后我又遇到了另一个错误......你是对的,看来我选择了一个不好的时间来开始使用这个工具
  • webpack-cli 是在 webpack 4 中引入的。如果你运行较低的东西,你就不需要它。此外,即使包被命名为webpack-cli,您仍然只使用webpack 运行它,可能是为了兼容性。
  • 好的,将我的package.json 中的extract-text-webpack-plugin 的版本更改为next 已解决问题!非常感谢。我想我应该等到下一个版本发布并更改它以匹配新的特定版本,而不是让它保持这种状态
  • 是的,您应该在版本发布后进行更新。您可以在此处查看当前状态github.com/webpack-contrib/extract-text-webpack-plugin/…
猜你喜欢
  • 2020-11-02
  • 2020-06-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多