【问题标题】:How to extract css to file from vue-cli webpack-simple project?如何从 vue-cli webpack-simple 项目中提取 css 到文件?
【发布时间】:2017-07-06 14:23:31
【问题描述】:

我还在学习 Vue,所以我正在努力弄清楚如何将内联 css 转换为 css 文件。

如果有人可以帮助我将 css(scss) 提取设置为单个 css 文件,我将不胜感激!

或者这会破坏 vue 的作用域样式的目的吗?

这是我的 webpack.config 代码:

var path = require('path')
var webpack = require('webpack')

module.exports = {
  entry: './src/main.js',
  output: {
    path: path.resolve(__dirname, './dist'),
    publicPath: '/dist/',
    filename: 'build.js'
  },
  module: {
    rules: [
      {
        test: /\.vue$/,
        loader: 'vue-loader',
        options: {
          loaders: {
            'scss': 'vue-style-loader!css-loader!sass-loader',
            'sass': 'vue-style-loader!css-loader!sass-loader?indentedSyntax'
          }    
        }
      },
      {
        test: /\.js$/,
        loader: 'babel-loader',
        exclude: /node_modules/
      },
      {
        test: /\.(png|jpg|gif|svg)$/,
        loader: 'file-loader',
        options: {
          name: '[name].[ext]?[hash]'
        }
      }
    ]
  },
  resolve: {
    alias: {
      'vue$': 'vue/dist/vue.esm.js'
    }
  },
  devServer: {
    historyApiFallback: true,
    noInfo: true
  },
  performance: {
    hints: false
  },
  devtool: '#eval-source-map'
}

if (process.env.NODE_ENV === 'production') {
  module.exports.devtool = '#source-map'

  module.exports.plugins = (module.exports.plugins || []).concat([
    new webpack.DefinePlugin({
      'process.env': {
        NODE_ENV: '"production"'
      }
    }),
    new webpack.optimize.UglifyJsPlugin({
      sourceMap: true,
      compress: {
        warnings: false
      }
    }),
    new webpack.LoaderOptionsPlugin({
      minimize: true
    })
  ])
}

【问题讨论】:

  • 你试过运行npm run build了吗?我有一个 vue-cli Webpack 项目,npm run build 自动将 CSS 从我的 .vue 文件中拉出并放入单独的 .css 文件中。此外,通过“内联 CSS”,您是否指的是 .vue 文件的 <style> 部分中的 CSS?或者您指的是在.vue 文件的<template> 部分的style="" 属性中定义的CSS?
  • 我认为 webpack-simple cli 没有内置提取。它将 css 写入文件的头部,而不是 inline ofc。
  • 好的,那么似乎一种快速的解决方案可能是创建一个“完整的”Webpack 项目并将您的代码移动到其中。我发现 Webpack 配置和构建文件非常难以理解,并且可能需要很长时间才能弄清楚如何手动设置以复制完整 Webpack 项目的行为。
  • 是的,你是对的。要试试看。谢谢内森。

标签: css vue.js


【解决方案1】:

所以,总结一下我们的 cmets:

这里的答案是让他创建一个新的“完整”Webpack 项目并将他的代码移入其中。

原因:

  1. 一个完整的 webpack 项目会自动从 .vue 文件中提取 CSS 到单个 CSS 文件中,这正是他想要的。
  2. “[T]webpack-simple cli 没有内置 [CSS] 提取”。
  3. Webpack 配置和构建文件可能很难理解,他可能需要很长时间才能弄清楚如何手动设置以复制完整 Webpack 项目的行为。

【讨论】:

  • 嗨,Nathan,我已经启动并运行了 vue-cli webpack,我想出了如何更改我的文件以便可以在完整的 webpack cli 中运行它。为所有帮助的人干杯!一个问题:有没有一种简单的方法可以从子目录而不是根目录运行构建?
  • 我不确定我是否理解您的问题。我的 webpack 项目位于一个名为 client 的文件夹中。通常我打开一个终端,cd 进入client 文件夹,然后从client 中运行npm run build。但是,如果我将cd 放入client 的子目录中,比如client/confignpm run build 仍然可以工作。所以我可以“从子目录而不是[项目]的根目录运行构建”。但也许你的意思不同?
  • 我的意思是,我想将构建上传到我的网络服务器上的子目录,而不是从根目录运行它。我已经将它上传到woolff.dk/frontio,但是当我在浏览器中运行它时,窗口是空白的。
  • 您使用什么来提供网页/静态资产?例如,我使用 Flask 服务器 (Python) 为 app.html 提供服务,其中包含我的 Vue 应用程序及其关联的静态文件(JavaScript 和 CSS)。
  • 您可能想查看this answer,我在其中准确描述了我如何让我的 Vue.js 项目与我的 Flask Web 服务器一起工作。
猜你喜欢
  • 2019-03-18
  • 2018-05-17
  • 1970-01-01
  • 2019-01-03
  • 2018-05-14
  • 2018-12-21
  • 2018-03-27
  • 2018-08-15
  • 2018-04-17
相关资源
最近更新 更多