请问这个 collection.html 文件是如何解析 less 文件的?在webpack配置中哪里看出来的?

请问这个 collection.html 文件是如何解析 less 文件的?

collection.html

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="utf-8">
    <!-- 文档兼容模式的定义 -->
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <!-- 优先使用webkit内核渲染页面 -->
    <meta name="renderer" content="webkit">
    <!-- 设置可视区域宽度与设备屏幕缩放比例为1.0 -->
    <!-- <meta name="viewport" content="width=device-width, initial-scale=1"> -->
    <link rel="icon" href="./favicon.ico">
    <script src="/config/config.js" type="text/javascript"></script>
<link href="/styles/vender.css" rel="stylesheet"></head>
<body>
<div id="root">
    <div id="scale">
<header class="main-header">
    <div class="main-logo collection-logo"></div>
</header>
<div class="collection">
    <div id="lines" style="width: 809px;height: 920px;margin-left: 556px;margin-top: 67px;"></div>
</div>
</div>
</div>
<script type="text/javascript" src="/scripts/vender.js"></script><script type="text/javascript" src="/scripts/collection.js"></script></body>
</html>

webpack 的配置

const path = require('path');
const webpack = require('webpack');
const ExtractTextPlugin = require("extract-text-webpack-plugin");
const HtmlWebpackPlugin = require('html-webpack-plugin');
const fs = require('fs');
const CommonsChunkPlugin = webpack.optimize.CommonsChunkPlugin; //提取公共库
var UglifyJsPlugin = webpack.optimize.UglifyJsPlugin;

const CW_NODE_ENV = process.env.CW_NODE_ENV;

let config = {
    devtool: "#source-map",
    entry: {},
    output: {
        path: path.resolve(__dirname, 'static'), //编译的目录
        filename: 'scripts/[name].js',
        publicPath: '/', //发布目录
        chunkFilename: "scripts/chunks/[name].chunk.js" // 用于异步加载require.ensure使用
    },
    resolve: {
        alias: {}
    },
    module: {
        rules: [
            {
                test: /\.less$/,
                loader: ExtractTextPlugin.extract({
                    fallback: 'style-loader',
                    use: 'css-loader!less-loader'
                })
            },
            {
                test: /\.(png|jpg|gif)$/,
                loader: 'url-loader?limit=8192&publicPath=/&outputPath=images/' //  <= 8kb的图片base64内联
            },
            /*{
             test: /\.html$/,
             loader: 'html-loader'
             }*/
        ]
    },
    plugins: [
        new CommonsChunkPlugin({
            name: 'vender',
            filename: 'scripts/[name].js'
        }),
        new webpack.DefinePlugin({
            'process.env.NODE_ENV': JSON.stringify(CW_NODE_ENV || 'production') // production/development
        }),
        new ExtractTextPlugin({
            filename: 'styles/[name].css'
        }),
        //需要暴露到全局使用的vendor列表
        new webpack.ProvidePlugin({
            $: "jquery",
            jQuery: "jquery",
            "window.jQuery": "jquery"
        })
    ]
};

// 页面添加处理

let entry = {
    'vender': [
        'jquery',
        'echarts',
        './src/scripts/common.js'

    ]
};

const files = fs.readdirSync('src/pages');
for (let i = 0, len = files.length; i < len; i++) {
    const file = files[i];
    const fileName = file.substring(0, file.lastIndexOf('.html'));
    if (fileName) {
        const isExists = fs.existsSync(`src/scripts/${fileName}.js`);
        const chunks = ['vender'];
        if (isExists) {
            entry[fileName] = `./src/scripts/${fileName}.js`;
            chunks.push(fileName);
        }

        config.plugins.push(
            new HtmlWebpackPlugin({
                filename: `${fileName}.html`,
                template: `src/pages/${fileName}.html`,
                chunks: chunks
            }));
    }
}

config.entry = entry;

if (CW_NODE_ENV == 'production') {
    config.plugins.push(
        new UglifyJsPlugin({
            compress: {
                warnings: false
            }
        })
    );
}

module.exports = config;
阅读 2.5k
2 个回答
{
                test: /\.less$/,
                loader: ExtractTextPlugin.extract({
                    fallback: 'style-loader',
                    use: 'css-loader!less-loader'
                })
            },

html没有解析,是webpack负责的。webpack无法识别less文件,所以需要load去帮他转换成能识别的文件,这也是webpack优秀的地方,即通过不同的loader可以实现对不同资源的打包

 module: {
        rules: [
            {
                test: /\.less$/,
                loader: ExtractTextPlugin.extract({
                    fallback: 'style-loader',
                    use: 'css-loader!less-loader'
                })
            }
            

/.less$/表示正则匹配.less后缀名的文件

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题