1

私は webpack を使用しており、JavaScript で scss ファイルをロードしたいと考えています。(または、分離できる場合は、それも問題ありません)。

これは私のwebpack構成です:

"use strict";
const CopyWebpackPlugin = require('copy-webpack-plugin');
const path = require('path');

module.exports = {
    context: __dirname + '/src',
    entry: './js/index.js',
    output: {
        path: './build',
        filename: 'js/app.bundle.js'
    },
    module: {
        loaders: [
            {
                test: /\.js$/,
                exclude: /node_modules/,
                loader: 'babel-loader'
            },
            {
                test: /\.scss$/,
                loaders: ["style", "css", "sass"]
            }
        ]
    },
    resolve: {
        root: [
            path.resolve('./src/js'),
            path.resolve('./src/scss')
        ],
        extensions: ['', '.js']
    },
    plugins: [
        new CopyWebpackPlugin([
            { from: 'html/**', to: `${__dirname}/build/html`, flatten: true },
            { from: 'images/**', to: `${__dirname}/build/image`, flatten: true }
        ])
    ]
};

これは私のファイルリストです:

  • src/html/index.html -> build/html/index.html (動作)
  • src/images/** -> build/images/** (動作)
  • src/js/index.js -> build/js/app.bundle.js (動作)
  • src/scss/** -> build/css/** (動作しません)

これは私の JavaScript コードです。プロジェクトを開始したばかりなので、コードはあまりありません:

import "babel-polyfill";
import React from 'react';
import ReactDOM from 'react-dom';
import moduleA from 'moduleA';
import "view/startup.scss";

ReactDOM.render(
    <div>
        <h1>Helloworld!</h1>
    </div>,
    document.getElementById('entry')
);

これを見ることができます: import "view/startup.scss"; JavaScript に scss ファイルをロードしたいのですが、webpack コマンドを実行すると、次のように表示されます。

ローダーのエラー /Users/.../Desktop/work/my-project/app/node_modules/css/index.js が関数を返さなかった @ ./scss/view/startup.scss 4:14-123

webpack config の "resolve" プロパティで、scss 用に別のルート ディレクトリを追加したことがわかります。また、sass-loader もロードしましたが、機能せず、理由がわかりません。

そして、私が知っているように、css/scss を含む Webpack を使用すると、宛先ファイルに自動的に挿入されるため、別のファイルとして抽出する必要はありません。これが機能することを望んでいます。

どんな助けでも大歓迎です:)

* 更新 * ./scss/view/startup.scss のコード

#startup {
    background-color: #7087d7;
}
4

1 に答える 1