Webpack - postcss-import не может найти файлы CSS с VueJs

Я не могу заставить его работать для загрузки файлов css в моем проекте VueJs. Я недавно добавил менее загрузчик и sass-загрузчик, они работают нормально. Но когда я добавляю файл css в файл sass или main.js с импортом, он не может найти файл.

Вот что я делаю:

дерзкий:

@import "../../../../node_modules/pnotify/dist/PNotifyBrightTheme.css";

or js:

import 'module/pnotify/dist/PNotifyBrightTheme.css'

веб-пакет.base.config:

resolve: {
  extensions: ['.js', '.vue', '.json', '.css'],
  alias: {
    'vue$': 'vue/dist/vue.esm.js',
    '@': resolve('src'),
    'module': resolve('node_modules')
  }
},
module: {
  rules: [{
    test: /\.css$/,
    use: [
      'style-loader',
      {
        loader: 'css-loader',
        options: { importLoaders: 1 }
      },
      'postcss-loader'
    ]
  }]
}

файл postcssrc.js:

module.exports = {
  "plugins": {
    "postcss-import": {},
    "postcss-url": {},
    "autoprefixer": {}
  }
}

установленные модули:

"css-loader": "^0.28.11",
"postcss-load-config": "^1.2.0",
"postcss-import": "^11.0.0",
"postcss-loader": "^2.1.4",
"postcss-url": "^7.2.1",
"style-loader": "^0.21.0",

библиотека с файлом css

"pnotify": "^4.0.0-alpha.4",

Исключение:

in ./src/assets/scss/index.scss

Module build failed: Error: Failed to find '../../../../node_modules/pnotify/dist/PNotifyBrightTheme.css'
  in [
    /src/assets/scss
  ]
    at resolveModule.catch.catch (/node_modules/postcss-import/lib/resolve-id.js:35:13)
    at <anonymous>

 @ ./src/assets/scss/index.scss 4:14-212 13:3-17:5 14:22-220
 @ ./src/main.js
 @ multi (webpack)-dev-server/client?http://localhost:8080 webpack/hot/dev-server ./src/main.js

Кто-нибудь знает, как это сделать? Я впадаю в отчаяние :(


person user3379167    schedule 16.06.2018    source источник


Ответы (1)


После многих исследований я решил проблему, сделав это.

  • Полностью удалите postcss в npm и удалите все конфиги в build/utils.js и build/webpack.base.config.js
  • Оставьте css-loader и style-loader установленными и не добавляйте их в конфигурацию веб-пакета, потому что VueJs уже установил его. -> https://github.com/webpack-contrib/css-loader/issues/362

Некоторый пример кода, который убил мою загрузку/импорт CSS: В build/utils.js

const cssLoader = {
    loader: 'css-loader',
    options: {
      sourceMap: options.sourceMap
    }
  }

  //remove this
  const postcssLoader = {
    loader: 'postcss-loader',
    options: {
      sourceMap: options.sourceMap
    }
  }

  // generate loader string to be used with extract text plugin
  function generateLoaders (loader, loaderOptions) {
    //change to const loaders = [cssLoader]
    const loaders = options.usePostCSS ? [cssLoader, postcssLoader] : [cssLoader]

    if (loader) {
      loaders.push({
        loader: loader + '-loader',
        options: Object.assign({}, loaderOptions, {
          sourceMap: options.sourceMap
        })
      })
    }
  }
}

Также удалите весь этот код: В конфигурации веб-пакета

 {
   test: /\.css$/,
   use: [
     'style-loader',
     {
       loader: 'css-loader',
       options: { importLoaders: 1 }
     },
     'postcss-loader'
   ]
 },
person user3379167    schedule 17.06.2018