美文网首页
webpack从0开始搭建react的ts开发环境(7)

webpack从0开始搭建react的ts开发环境(7)

作者: 汤姆猫_6074 | 来源:发表于2020-01-17 15:21 被阅读0次

本章演示对css less scss的支持
webpack从0开始搭建react的ts开发环境(6)
demo https://github.com/757566833/webpack-guide

  1. 安装对应的loader
    这里不再解释style-loader和 mini-css-extract-plugin的具体细节
    样式文件最终要拆成单独的css文件,就不演示那么多了,一步到位
yarn add mini-css-extract-plugin css-loader --dev

2.添加css支持 webpack.config.js

const path = require('path');
const HtmlWebpackPlugin = require("html-webpack-plugin");
// 这里增加
const MiniCssExtractPlugin = require("mini-css-extract-plugin");
module.exports = {
    entry: './src/app.tsx',
    output: {
        path: path.resolve(__dirname, 'dist'),
        filename: 'app.js'
    },
    module: {
        rules: [{
                test: /\.tsx?$/,
                loader: "ts-loader",

                exclude: /node_modules/,
            },
//这里增加
            {
                test: /\.css$/,
                use: [{
                        loader: MiniCssExtractPlugin.loader,
                    },
                    {
                        loader: "css-loader",
                    },

                ],
                exclude: /node_modules/,
            },
        ]
    },
    plugins: [
        new HtmlWebpackPlugin({
            title: "test",
           template: path.resolve(__dirname, "template.html"),
        }),
//这新加
     new MiniCssExtractPlugin({
           filename: "app.css",
         
        }),
    ]
};

3.src下的app.tsx文件修改为

import React from "react";
import ReactDOM from "react-dom";
import './app.css'
class App extends React.Component {
    public render() {
        return (
            <div>
             <div className='red'>hello red</div>
            </div>
        );
    }
}

ReactDOM.render(<App />, document.getElementById("root"));

4.在src下新加css文件app.css

.red{
    color:red
}

5.npm run webpack

  1. 打开dist下的index.html
    7.添加less支持
// 由于antd目前的稳定版为3,所以我们只装less@2
yarn add less@2.7.3 less-loader --dev

8.添加webpack的loader

const path = require('path');
const HtmlWebpackPlugin = require("html-webpack-plugin");
const MiniCssExtractPlugin = require("mini-css-extract-plugin");
module.exports = {
    entry: './src/app.tsx',
    output: {
        path: path.resolve(__dirname, 'dist'),
        filename: 'app.js'
    },
    module: {
        rules: [{
                test: /\.tsx?$/,
                loader: "ts-loader",

                exclude: /node_modules/,
            },
            {
                test: /\.css$/,
                use: [{
                        loader: MiniCssExtractPlugin.loader,
                    },
                    {
                        loader: "css-loader",
                    },

                ],
                exclude: /node_modules/,
            },
            {
                test: /\.less$/,
                use: [{
                    loader: MiniCssExtractPlugin.loader,
                },
                {
                    loader: "css-loader",
                },
                {
                    loader: "less-loader",

                },
                ],
            },
        ]
    },
    plugins: [
        new HtmlWebpackPlugin({
            title: "test",
           template: path.resolve(__dirname, "template.html"),
        }),
        new MiniCssExtractPlugin({
            filename: "app.css",       
        }),
    ]
};

9.新建src/app.less

.green{
    color: green;
}

10.index/app.tsx修改

import React from "react";
import ReactDOM from "react-dom";
import './app.css'
import './app.less'
class App extends React.Component {
    public render() {
        return (
            <div>
                <div className='red'>hello red</div>
                <div className='green'>hello green</div>
            </div>
        );
    }
}

ReactDOM.render(<App />, document.getElementById("root"));

11.npm run webpack

12.添加sass支持

yarn add sass-loader node-sass --dev

13.修改webpack.config.js

const path = require('path');
const HtmlWebpackPlugin = require("html-webpack-plugin");
const MiniCssExtractPlugin = require("mini-css-extract-plugin");
module.exports = {
    entry: './src/app.tsx',
    output: {
        path: path.resolve(__dirname, 'dist'),
        filename: 'app.js'
    },
    module: {
        rules: [{
                test: /\.tsx?$/,
                loader: "ts-loader",

                exclude: /node_modules/,
            },
            {
                test: /\.css$/,
                use: [{
                        loader: MiniCssExtractPlugin.loader,
                    },
                    {
                        loader: "css-loader",
                    },

                ],
                exclude: /node_modules/,
            },
            {
                test: /\.less$/,
                use: [{
                        loader: MiniCssExtractPlugin.loader,
                    },
                    {
                        loader: "css-loader",
                    },
                    {
                        loader: "less-loader",
                    },
                ],
            },
            {
                test: /\.scss$/,
                use: [{
                    loader: MiniCssExtractPlugin.loader
                }, {
                    loader: 'css-loader',
                }, {
                    loader: 'sass-loader'
                }],
                exclude: /node_modules/
            },
        ]
    },
    plugins: [
        new HtmlWebpackPlugin({
            title: "test",
            template: path.resolve(__dirname, "template.html"),
        }),
        new MiniCssExtractPlugin({
            filename: "app.css",
        }),
    ]
};

14.修改app.tsx

import React from "react";
import ReactDOM from "react-dom";
import './app.css'
import './app.less'
import './app.scss'
class App extends React.Component {
    public render() {
        return (
            <div>
                <div className='red'>hello red</div>
                <div className='green'>hello green</div>
                <div className='blue'>hello blue</div>
            </div>
        );
    }
}

ReactDOM.render(<App />, document.getElementById("root"));

15.添加src/app.scss

.blue {
    color: blue
}

16.npm run webpack
17.打开dist/index.html
webpack从0开始搭建react的ts开发环境(8)

相关文章

网友评论

      本文标题:webpack从0开始搭建react的ts开发环境(7)

      本文链接:https://www.haomeiwen.com/subject/etwczctx.html