javascript - 在 Webpack 中,如何通过单个条目 main.js(文件中有多个 css 文件)获得多个输出?

标签 javascript css webpack less webpack-plugin

我的目录结构应该是这样的。

|-src/
|   |-styles/ (less)
|   |   |-xx.less(input inside main.js)
|   |   |-yy.less(input inside main.js)
|   |   |-zz.less(input inside main.js)
|
|-dist/  
    |-assets/
    |   |-xx.css(output should be like this)
    |   |-yy.css(output should be like this)
    |   |-zz.css(output should be like this)

我的 main.js 文件包含,

require('./styles/xx.less');
require('./styles/yy.less');
require('./styles/zz.less');

我的切入点是

entry: {
    app: './main.js'
  },

1.如何将输出作为 block (xx.css、yy.css、zz.css)? 2. 在那里尝试了 extractTextPlugin 我能够以 app.css 的名称获得输出,但不是我想要的。 我可以尝试使用哪个插件提取与 main.js 文件中相同名称和输入数量的输出?

最佳答案

您可以将您的 css 需求分离到文件和它们的入口点中。 例如:

xx.less.js

require('./styles/xx.less');

并在 webpack 条目中:

app: [path.join(__dirname, 'path/to/xx.less.js')]

并使用节点脚本或其他东西多次调用 webpack

更详尽的答案:

webpack 配置中的每个条目都代表将要创建的捆绑文件,入口指向起点 js 文件,每个 css 文件将根据该 js 文件中的 css 引用创建。

所以如果你想要几个 css 文件,你需要在你的 webpack 配置中有几个条目,条目中的每个 js 都需要它的 less 文件,这样你将得到 3 个 js 文件和 3 个 css 文件,所以你的配置应该看起来像这个:

{
        entry: {
            xx: [ path.resolve(__dirname, 'path/to/js/xx.js')],
            yy: [ path.resolve(__dirname, 'path/to/js/yy.js')],
            zz: [ path.resolve(__dirname, 'path/to/js/zz.js')]
        },

        output: {
            path: path.resolve(__dirname, 'dist/assets'),
            filename: '[name].js' //the placeholder name will be replace by the entry name (xx,yy,zz)
        }

        ...

        plugins: [
            new ExtractTextPlugin({
                filename: '[name].css' //this is the name of the css according to the entry in the js file
            })
}

你的 less loader 应该保持不变,只指向所有 less 文件所在的 src/styles 并且在你的 javascript 文件(xx.js,yy.js,zz.js)中你应该需要相应的 less 文件

在 xx.js 中调用 xx.less: require('./styles/xx.less');

在 yy.js 中调用 yy.less: require('./styles/yy.less');

在 zz.js 中调用 zz.less: require('./styles/zz.less');

当你运行 webpack 时,他会生成 3 个 css 文件(和 3 个 js 文件...)

关于javascript - 在 Webpack 中,如何通过单个条目 main.js(文件中有多个 css 文件)获得多个输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45479540/

相关文章:

html - 如何从width Angular 控制textarea的可扩展性

html - 如何在 css 中平滑悬停时为背景图像大小设置动画?

reactjs - React Storybook SVG 无法在 'createElement' 上执行 'Document'

javascript - 如何使用 vuetify 减少 vue js 构建大小?

css - 控制台中的 Bootstrap css 错误

javascript - 使用 Jquery 和 javascript 根据 html 输入过滤选择选项

Javascript:外部函数中的变量不会被内部函数更改

javascript - AIR HTMLLoader window.open 不起作用

webpack - 使用 webpack 导入 vis.js

javascript - 倒计时器的可能性 - Javascript