注意: 自定义主题依赖。

    如果你的项目是用 vue-cli 生成的,那么找到 build/utils.js 中的 exports.cssLoaders 函数,改成如下:

    1. exports.cssLoaders = function (options) {
    2. options = options || {}
    3. const cssLoader = {
    4. loader: 'css-loader',
    5. options: {
    6. minimize: process.env.NODE_ENV === 'production',
    7. sourceMap: options.sourceMap
    8. }
    9. }
    10. var postcssLoader = {
    11. loader: 'postcss-loader',
    12. options: {
    13. sourceMap: options.sourceMap
    14. }
    15. // generate loader string to be used with extract text plugin
    16. function generateLoaders (loader, loaderOptions) {
    17. const loaders = options.usePostCSS ? [cssLoader, postcssLoader] : [cssLoader]
    18. if (loader) {
    19. loaders.push({
    20. loader: loader + '-loader',
    21. options: Object.assign({}, loaderOptions, {
    22. sourceMap: options.sourceMap
    23. })
    24. })
    25. }
    26. // Extract CSS when that option is specified
    27. // (which is the case during production build)
    28. if (options.extract) {
    29. return ExtractTextPlugin.extract({
    30. use: loaders,
    31. fallback: 'vue-style-loader'
    32. })
    33. }
    34. }
    35. const stylusOptions = {
    36. 'resolve url': true,
    37. // 这里 新增 import 配置项,指向自定义主题文件
    38. import: [path.resolve(__dirname, '../src/theme')]
    39. }
    40. // https://vue-loader.vuejs.org/en/configurations/extract-css.html
    41. return {
    42. css: generateLoaders(),
    43. postcss: generateLoaders(),
    44. less: generateLoaders('less'),
    45. sass: generateLoaders('sass', { indentedSyntax: true }),
    46. scss: generateLoaders('sass'),
    47. stylus: generateLoaders('stylus',stylusOptions),
    48. styl: generateLoaders('stylus',stylusOptions)
    49. }

    原文: