【问题标题】:webpack: multiple input with multiple file-type outputswebpack:具有多个文件类型输出的多个输入
【发布时间】:2017-05-05 20:43:12
【问题描述】:

我已经能够使用一个入口点将“es6 标准”js 文件编译为本机 js,我还能够使用多个入口来编译多个文件。示例:

webpack.config.js

module.exports = {
    entry: {
        front: "./static/src/js/Front.js",
        account: "./static/src/js/Account.js"
    },
    output: {
        path: "./static/dist",
        filename: "[name]-bundle.js"
    }
};

我已经理解了使用模块/插件编译其他文件的概念,还有一点……

modules: {
    loaders: [
      { tests: '/\.(css|scss)$/', loader: 'css-loader|style-loader'}
    ]
}

这些解决方案仅将我的文件编译成 JavaScript,包括我的 styles (scss, sass, css)

我正在寻找一种解决方案,我将拥有两个(或多个)不同的入口文件,每个入口文件都将生成具有自己文件类型的自己的输出文件(不仅仅是.js)。我不介意有多个配置模块。谢谢...

【问题讨论】:

  • 我不确定你在问什么,从我看到你已经有办法将你的源代码提取到多个文件中,你是在谈论从包中删除样式表吗?
  • 是的!这就是我想要做的 - “从包中删除样式表并将其放入 css 文件中”

标签: javascript sass webpack ecmascript-6


【解决方案1】:

由于您的代码在 SCSS 中,因此您需要 SCSS 加载器和 CSS 加载器,还需要 extract-text-webpack-plugin,这就是将包中的任何文本带入单独文件的原因。

另外,因为我知道你会想要从包中移动图像和字体文件,所以我继续添加用于提取图像/字体的测试,对于那些你需要安装 file-loader 的人。希望对你有帮助

const path = require('path');
const webpack = require('webpack');
const ExtractText = require('extract-text-webpack-plugin');

const extractCss= new ExtractText({ filename: 'styles/vendors.css' });
const extractSass = new ExtractText({ filename: 'styles/site.css' });

module.exports = (env) => {
  return {
    entry: {
      main: path.resolve(__dirname, '../', 'src', 'Front.js'),
    },
    output: {
      path: path.resolve(__dirname, '../', 'dist'),
      filename: 'js/[name]-bundle.js',
    },
    module: {
      rules: [
        { test: /\.css/, use: extractCss.extract(['css-loader']) },
        { test: /\.scss/, exclude: /node_modules/, use: extractSass.extract(['css-loader', 'sass-loader']) },

        { test: /\.(png|jpg)$/, exclude: /node_modules/, use: 'file-loader?outputPath=images/&publicPath=../'},
        { test: /\.(ttf|eot|svg|woff(2)?)(\?[a-z0-9]+)?$/, use: 'file-loader?outputPath=fonts/&publicPath=../'},
      ]
    },
    resolve: {
      modules: ['node_modules'],
    },
    plugins: [
      extractCss,
      extractSass,
    ]
  }
}

PS: I am in a hurry out, so I just cooked this up fast, when I come back I will review, in case you find any bugs, just comment below.

【讨论】:

  • 谢谢,这很好用,除了 scss 其他供应商的文件中的资产,如 bootstrap。我收到一些这样的错误(这只是一点点,错误消息很长)Module not found: Error: Can't resolve './fonts/glyphicons-halflings-regular.eot'
  • 如果你不使用任何字体,你可以把它们去掉
  • 我正在使用字体文件
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-27
相关资源
最近更新 更多