美文网首页
webpack--loader

webpack--loader

作者: 手指乐 | 来源:发表于2019-10-05 17:01 被阅读0次

loader 用于对模块的源代码进行转换。loader 可以使你在 import 或"加载"模块时预处理文件。loader 可以将文件从不同的语言(如 TypeScript)转换为 JavaScript,或将内联图像转换为 data URL。loader 甚至允许你直接在 JavaScript 模块中 import CSS文件!

现在我们来演示一下如何用 loader 来处理 CSS 文件。

先准备好内容。

src/app.css

body { background: pink;
}

src/app.js

import css from './app.css';

console.log("hello world");

如果你现在运行 webpack 命令,会提示错误

意思就是说,默认情况下,webpack 处理不了 CSS 的东西。

我们来处理这个问题。
$ npm install --save-dev css-loader style-loader
webpack.config.js:

var HtmlWebpackPlugin = require('html-webpack-plugin');

module.exports = {
  entry: './src/app.js',
  output: {
    path: __dirname + '/dist',
    filename: 'app.bundle.js'
  },
  plugins: [new HtmlWebpackPlugin({
    template: './src/index.html',
    filename: 'index.html',
    minify: {
      collapseWhitespace: true,
    },
    hash: true,
  })],
  module: {
    rules: [
      {
        test: /\.css$/,
        use: [ 'style-loader', 'css-loader' ]
      }
    ]
  }
};

再执行webpack,就会把css打包进js文件了

如果不希望把css打包到js文件里,可以使用extract-text-webpack-plugin插件把css打包到指定的css文件中
npm install --save-dev extract-text-webpack-plugin
旧版本已经不支持webpack4了,所以要使用以下命令:
npm install extract-text-webpack-plugin@next
webpack.config.js:

var HtmlWebpackPlugin = require('html-webpack-plugin');
const ExtractTextPlugin = require('extract-text-webpack-plugin');


module.exports = {
    entry:'./src/app.js',
    output:{
        filename:'app.bundle.js'
    },
    plugins: [
    new HtmlWebpackPlugin(
          {
              minify:{
                  collapseWhitespace: false,
              },
              hash: true
          }
      ),
       new ExtractTextPlugin({
            filename: 'css/[name].css' //路径以及命名
        })
      ],
      module: {
        rules: [
              {
                test: /\.css$/,
                loader: ExtractTextPlugin.extract({ fallback: 'style-loader', use: 'css-loader' }),
                exclude: /node_modules/,
            }
    ]
  }
}

生成的html类似于:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>Webpack App</title>
  <meta name="viewport" content="width=device-width,initial-scale=1"><link href="css/main.css?5300da63334cc72d7813" rel="stylesheet"></head>
  <body>
  <script src="app.bundle.js?5300da63334cc72d7813"></script></body>
</html>

在dist/css下面会生成main.css

相关文章

  • webpack--loader

    loader 用于对模块的源代码进行转换。loader 可以使你在 import 或"加载"模块时预处理文件。lo...

网友评论

      本文标题:webpack--loader

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