【问题标题】:Is that possible to import css file as string in es6?可以在es6中将css文件作为字符串导入吗?
【发布时间】:2019-08-27 04:30:12
【问题描述】:

我想打包 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;
}

这似乎不适合我。

有办法吗?

【问题讨论】:

  • @DacreDenny 不,这是来自css-loader的解决方案
  • 我试过const css = require('to-string-loader!css-loader!./test.css').toString();const css = require('to-string-loader!./test.css').toString();,第一种方法是CssSyntaxError,另一种输出结果相同。
  • 输出为"[object Object]"
  • 你可以在 OP 中包含你的 css 的内容吗?
  • 我已经在 OP 中添加了 css 文件上下文

标签: javascript css webpack es6-modules


【解决方案1】:

从您的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 文件的加载器中删除它的原因。

【讨论】:

  • 顺序同origin,to-string-loader是低于css-loader的索引
  • 是的,我认为你是对的。如果要将css文件插入到Shadow DOM中,而vue-style-loader是没用的
  • 我删除了vue-style-loader,它对我有用。非常感谢!
猜你喜欢
  • 1970-01-01
  • 2021-12-05
  • 2022-11-03
  • 2023-03-26
  • 2011-01-20
  • 2016-08-07
  • 1970-01-01
  • 1970-01-01
  • 2021-08-11
相关资源
最近更新 更多