javascript - 如何在 vue-loader 中使用 postcss(丢失网格)

标签 javascript webpack vue.js postcss

我正在尝试 Vue2,并对在我的应用程序中使用丢失网格 ( http://lostgrid.org/ ) 有疑问。 Lost-grid 是一个 postcss 网格系统,我已经能够在带有 webpack2 的 React 应用程序中多次使用它。

如何将lost-grid i 与vue-loader 一起使用?我已经通过 npm 安装了“lost”,并尝试了添加 postcss 加载器的不同方法。似乎没有任何作用,文档也不是很有帮助。

这是 webpack.base.conf.js 的业务部分(据我所知,所有 css 加载都是通过 vue-loader 运行的):

module: {
    rules: [
      {
        test: /\.(js|vue)$/,
        loader: 'eslint-loader',
        enforce: "pre",
        include: [resolve('src'), resolve('test')],
        options: {
          formatter: require('eslint-friendly-formatter')
        }
      },
      {
        test: /\.vue$/,
        loader: 'vue-loader',
        options: vueLoaderConfig
      },
      {

...

vue-loader.conf.js 看起来像:

var utils = require('./utils')
var config = require('../config')
var isProduction = process.env.NODE_ENV === 'production'

module.exports = {
  loaders: utils.cssLoaders({
    sourceMap: isProduction
      ? config.build.productionSourceMap
      : config.dev.cssSourceMap,
    extract: isProduction
  })
}

utils.js 看起来像这样:

var path = require('path')
var config = require('../config')
var ExtractTextPlugin = require('extract-text-webpack-plugin')

exports.assetsPath = function (_path) {
  var assetsSubDirectory = process.env.NODE_ENV === 'production'
    ? config.build.assetsSubDirectory
    : config.dev.assetsSubDirectory
  return path.posix.join(assetsSubDirectory, _path)
}

exports.cssLoaders = function (options) {
  options = options || {}

  var cssLoader = {
    loader: 'css-loader',
    options: {
      minimize: process.env.NODE_ENV === 'production',
      sourceMap: options.sourceMap
    }
  }

  // generate loader string to be used with extract text plugin
  function generateLoaders (loader, loaderOptions) {
    var loaders = [cssLoader]
    if (loader) {
      loaders.push({
        loader: loader + '-loader',
        options: Object.assign({}, loaderOptions, {
          sourceMap: options.sourceMap
        })
      })
    }

    // Extract CSS when that option is specified
    // (which is the case during production build)
    if (options.extract) {
      return ExtractTextPlugin.extract({
        use: loaders,
        fallback: 'vue-style-loader'
      })
    } else {
      return ['vue-style-loader'].concat(loaders)
    }
  }

  // http://vuejs.github.io/vue-loader/en/configurations/extract-css.html
  return {
    css: generateLoaders(),
    postcss: generateLoaders(''),
    less: generateLoaders('less'),
    sass: generateLoaders('sass', { indentedSyntax: true }),
    scss: generateLoaders('sass'),
    stylus: generateLoaders('stylus'),
    styl: generateLoaders('stylus')
  }
}

// Generate loaders for standalone style files (outside of .vue)
exports.styleLoaders = function (options) {
  var output = []
  var loaders = exports.cssLoaders(options)
  for (var extension in loaders) {
    var loader = loaders[extension]
    output.push({
      test: new RegExp('\\.' + extension + '$'),
      use: loader
    })
  }
  return output
}

现在的问题是...我该把什么东西放在哪里?任何帮助将不胜感激。

最佳答案

将以下行添加到 build/中的 vue-loader.config.js 文件

postcss: [
    require('autoprefixer')({
        browsers: ['last 7 versions']
    })
]

所以它看起来像这样:

 module.exports = {
  loaders: utils.cssLoaders({
    sourceMap: isProduction ? config.build.productionSourceMap : config.dev.cssSourceMap,
    extract: isProduction
  }),
  postcss: [
    require('autoprefixer')({
      browsers: ['last 7 versions']
    })
  ]
}

关于javascript - 如何在 vue-loader 中使用 postcss(丢失网格),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42858593/

相关文章:

javascript - 在循环( Node )中使用 Promise

javascript - 不同的响应式布局处理

docker - Docker从文件撰写构建时间参数

javascript - 如何在 Vuex 突变中设置参数和参数

javascript - 如何使用 vuejs 绑定(bind)来自服务器的动态字段

javascript - html 选择列表 - 通过传入变量获取文本值?

javascript - 当页面位置改变时调用 Tampermonkey 脚本

javascript - 来自 UglifyJs 的 bundle.js 中的错误

javascript - 在 audiosprite 中加载错误 - 找不到模块 : 'child_process'

javascript - 创建可以管理外部数据的抽象组件