gpt4 book ai didi

javascript - 如何使用 webpack 排除 "node_modules"内的 css 文件?

转载 作者:行者123 更新时间:2023-11-29 23:17:20 29 4
gpt4 key购买 nike

在我的 javascript 元素的一个非常简单的演示中,我使用“css-loader”来加载 css 文件。

package.json

{
"devDependencies": {
"webpack": "^4.17.1",
"webpack-cli": "^3.1.0",
"css-loader": "^1.0.0",
"style-loader": "^0.23.0"
}
}

webpack.config.js

const path = require('path')

module.exports = {
mode: 'development',
entry: './entry.js',
output: {
path: __dirname,
filename: 'bundle.js'
},
module: {
rules: [{
test: /\.css$/,
exclude: path.resolve('./node_modules/'),
use: [
{loader: 'style-loader'},
{loader: 'css-loader'}
]
}]
}
}

请注意我已经排除了“node_modules”目录。

但是当我运行 npx webpack 时,输出

Hash: 3d4b3f13f73f8b4ff12f
Version: webpack 4.17.1
Time: 255ms
Built at: 2018-09-12 18:13:34
Asset Size Chunks Chunk Names
bundle.js 23 KiB main [emitted] main
Entrypoint main = bundle.js
[./entry.js] 78 bytes {main} [built]
[./index.css] 1.04 KiB {main} [built]
[./node_modules/css-loader/index.js!./index.css] ./node_modules/css-loader!./index.css 196 bytes {main} [built]
+ 3 hidden modules

仍然包含一些关于“node_modules”的内容。

我找不到问题出在哪里,如何解决?

更新:

我为这个问题做了一个演示:https://github.com/freewind-demos/javascript-webpack-exclude-node-modules-issue-demo ,您可以克隆并尝试使用它。

最佳答案

这里有点误会。 Webpack 本身只知道 javascript,当它需要编译其他资源,如 .css、.scss 等时。我们使用各自的加载器来编译这些非 javascript 资源。

这里实际发生了什么 webpack 使用 css-loader(节点模块)从入口点开始编译我们树中的所有 css 文件。它首先使用 css-loader 的 index.js 中的 util 转换为字符串:

loaderUtils.stringifyRequest(this, require.resolve("./css-base.js")) // line 153 css-loader/lib/loader.js

[./node_modules/css-loader/index.js!./index.css] ./node_modules/css-loader!./index.css 196 bytes {main} [built]

上面的行解释了 css 加载器如何编译和捆绑在 entry.js 中找到的 index.css 的 css 代码。这里的重点是,这些文件不是多余的,它们在帮助 webpack 打包非 js 文件。尽管 webpack 生成的输出有点令人困惑,但我仍然建议您研究 css-loader 的源代码,它在某种程度上让您可以理解它是如何编译 css 的。

关于javascript - 如何使用 webpack 排除 "node_modules"内的 css 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52292862/

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