javascript - 可以在es6中将css文件作为字符串导入吗?
问题描述
我想打包 css 文件并将其插入到我的应用程序的 shadow DOM 中。
我已经尝试过css-loader的方式:
如下文件:webpack.config.js
const path = require('path');
const CopyWebpackPlugin = require("copy-webpack-plugin");
const VueLoaderPlugin = require('vue-loader/lib/plugin')
module.exports = {
context: path.resolve(__dirname, 'src'),
entry: {
content: './content/index.js',
},
output: {
path: path.resolve(__dirname, 'dist'),
filename: '[name].js',
},
module: {
rules: [
{
use: 'babel-loader',
test: /\.js$/,
exclude: /node_modules/
},
{
test: /\.vue$/,
loader: 'vue-loader'
},
{
test: /\.css$/,
use: [
'vue-style-loader',
'to-string-loader',
{
loader: 'css-loader',
options: {}
}
]
}
]
}
}
我尝试使用这样的方式:
const css = require('./test.css').toString();
console.log(css); // [Object, Object]
import styles from './test.css';
console.log(styles) // {}
CSS 文件:
#app{
position: fixed;
right: 0;
top:0;
width: 420px;
height: 420px;
z-index: 9999;
}
它似乎对我不起作用。
有没有办法做到这一点?
解决方案
从您的webpack.config.js
看来,您为.css
文件指定加载程序的顺序似乎是从前到后的。
尝试颠倒数组中加载程序的顺序,use
以便将结果css-loader
传递给to-string-loader
,然后从传递to-string-loader
给您的脚本:
{
test: /\.css$/,
use: [
'to-string-loader',
'css-loader'
]
}
另外,我不确定您是否需要在vue-style-loader
此处包含,这就是为什么我从应用于 css 文件的加载程序中删除了它。
推荐阅读
- ios - iphone部分机型inputAccessoryView和安全区底部重叠
- bazel - 将 maven 工件下载到存储库的推荐规则(maven_install vs jvm_import_external)
- windows - 为什么表头的字体在 SQL Shell (psql) 中不能正确显示?
- javascript - 一个函数,用于计算元素的出现或频率并返回一个对象,但删除出现一个的元素并返回其余元素
- ssas - MDX 合并两个查询
- python - 在字符的第一次和最后一次出现时拆分?
- angular - SyntaxError:无法在 Angular/Nx/jest 应用程序中使用 @ionic-native/health 的模块外部使用 import 语句
- python - super() 可打印表示
- python - 单击下拉菜单项时出现 UnexpectedTagNameException
- javascript - 使用 jQuery 下载 .gz 文件