使用Webpack,是否可以只生成CSS,而不生成output.js?

使用Webpack,是否可以只生成CSS,而不生成output.js?,css,node.js,npm,bundling-and-minification,webpack,Css,Node.js,Npm,Bundling And Minification,Webpack,我在用这个 在我的项目中,我有一些构建脚本。其中一个构建脚本应该只绑定和缩小CSS。当我在其他脚本中使用Webpack时,我发现使用Webpack是一个好主意,即使我只想捆绑和缩小CSS 它工作得很好,只是我无法摆脱output.js文件。我不想要生成的网页包输出文件。我只想要这个特定脚本的CSS 有没有办法摆脱产生的JS?如果没有,您是否建议使用其他特定于处理CSS的工具?谢谢。不幸的是,这在设计上目前是不可能的。webpack最初是一个JavaScript绑定器,能够处理其他“web模块”,

我在用这个

在我的项目中,我有一些构建脚本。其中一个构建脚本应该只绑定和缩小CSS。当我在其他脚本中使用Webpack时,我发现使用Webpack是一个好主意,即使我只想捆绑和缩小CSS

它工作得很好,只是我无法摆脱
output.js
文件。我不想要生成的网页包输出文件。我只想要这个特定脚本的CSS


有没有办法摆脱产生的JS?如果没有,您是否建议使用其他特定于处理CSS的工具?谢谢。

不幸的是,这在设计上目前是不可能的。webpack最初是一个JavaScript绑定器,能够处理其他“web模块”,如CSS和HTML。选择JavaScript作为基础语言。extract text webpack插件只是将这些字符串提取为独立文件(即名称)


您最好使用提供各种插件来有效处理CSS。

一种解决方案是使用节点API执行webpack,并使用选项控制输出。只需告诉它忽略生成的js文件。在webpackConfig中将output.path设置为“/”

var compiler = webpack(webpackConfig);
var mfs = new MemoryFS();
compiler.outputFileSystem = mfs;
compiler.run(function(err, stats) {
    if(stats.hasErrors()) { throw(stats.toString()); }
    mfs.readdirSync("/").forEach(function (f) {
        if(f === ("app.js")) { return; } // ignore js-file
        fs.writeFileSync(destination + f, mfs.readFileSync("/" + f));
    })
});
有一个简单的方法,不需要额外的工具。 有一个简单的方法,您不需要额外的库,除非您已经在使用:with

简言之: 使输出js和css文件具有相同的名称,然后css文件将覆盖js文件。

一个真实的例子(Webpack2.x):
触发
done
后,您可以清除
dist
文件夹中任何不需要的资产。这可以通过以下方法轻松实现:


祝你好运…

在使用迷你css提取插件时,这似乎是不可能的。迷你css提取插件有其他选择吗?
import path from 'path'
import ExtractTextPlugin from 'extract-text-webpack-plugin'

const config = {
  target: 'web',
  entry: {
    'one': './src/one.css',
    'two': './src/two.css'
  },
  output: {
    path: path.join(__dirname, './dist/'),
    filename: '[name].css' // output js file name is identical to css file name
  },
  module: {
    rules: [
      {
        test: /\.css$/,
        use: ExtractTextPlugin.extract({
          fallback: 'style-loader',
          use: 'css-loader'
        })
      }
    ]
  },
  plugins: [
    new ExtractTextPlugin('[name].css') // css file will override generated js file
  ]
}
//
plugins: [
        new EventHooksPlugin({
            'done': () => {
                // delete unwanted assets 
            }
        })
    ]