gpt4 book ai didi

express - 如何防止 mini-css-extract-plugin 创建 js 入口点

转载 作者:行者123 更新时间:2023-12-03 18:04:53 24 4
gpt4 key购买 nike

我对 express + webpack 比较陌生,所以我不清楚这是不是有意的,如果不是,如何正确配置它。问题在于使用 mini-css-extract-plugin 时创建的附加 Assets 和入口点。

webpack 配置:

Extract = require('mini-css-extract-plugin');
path = require('path');
Write = require('write-file-webpack-plugin');

module.exports = {
mode: 'development',
entry: {
demo_scripts: path.resolve('server', 'scripts', 'demo.js'),
demo_styles: path.resolve('server', 'styles', 'demo.css')
},
output: {
path: path.resolve('.tmp'),
filename: '[name].js'
},
plugins: [new Write(), new Extract()],
module: {
rules: [
{
test: /\.js$/,
use: [
{
loader: 'babel-loader',
options: {
presets: ['babel-preset-env']
}
}
]
},
{
test: /\.css/,
use: [
{
loader: Extract.loader
},
{
loader: 'css-loader'
}
]
}
]
}
};

webpack 输出
          Asset      Size        Chunks             Chunk Names
demo_scripts.js 3.91 KiB demo_scripts [emitted] demo_scripts
demo_styles.css 36 bytes demo_styles [emitted] demo_styles
demo_styles.js 3.89 KiB demo_styles [emitted] demo_styles
Entrypoint demo_scripts = demo_scripts.js
Entrypoint demo_styles = demo_styles.css demo_styles.js

我的问题是,为什么是 demo_styles.js被创造?尽管正在提取 css,但似乎 webpack 仍在使用 css 创建捆绑的 js,但是当我查看该文件时,其中唯一的一行是
eval("// extracted by mini-css-extract-plugin\n\n//# sourceURL=webpack:///./server/styles/demo.css?");

谁能帮忙解释这里发生了什么?

更新

如果我删除 demo_styles 入口点,并通过插件初始化对其进行配置,则不会构建任何 CSS Assets 。
({
plugins: [
new Write(),
new Extract({
filename: 'demo_styles.css'
})
]
});
Asset      Size        Chunks             Chunk Names
demo_scripts.js 3.91 KiB demo_scripts [emitted] demo_scripts
Entrypoint demo_scripts = demo_scripts.js

repo 协议(protocol)在这里(注意 express 分支) https://github.com/brewster1134/bumper/tree/express

最佳答案

您的问题有两种解决方法。对于他们两个,您需要更改entry Webpack 配置文件的点。我个人更喜欢第一种选择。

选项 1:

更改entry到以下:

entry: {
demo: [
path.resolve('server', 'scripts', 'demo.js'),
path.resolve('server', 'styles', 'demo.css'),
]
}

这将生成以下输出(基于您为 Extract 类和 output 部分提供的文件名:
  • demo.js
  • demo_styles.css

  • 选项 2:

    对于此选项,您需要从 entry 中删除 CSS 文件。指向并将其导入到 JS 文件中:

    webpack.config.js
    ...
    entry: path.resolve('server', 'scripts', 'demo.js'),
    ...

    演示.js
    import './../styles.demo.css'
    //rest of your JS codes

    此解决方案将生成与 Option1 相同的输出。

    关于express - 如何防止 mini-css-extract-plugin 创建 js 入口点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52072513/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com