Использование Extract-Text-Webpack-Plugin с Vue CLI 3 - PullRequest
0 голосов
/ 08 мая 2018

Я создал приложение, используя Vue CLI, который теперь абстрагирует конфигурацию Webpack от vue.config.js. Я пытаюсь извлечь свой CSS в файл styles.css. Прямо сейчас он извлекает файлы с произвольным именем, например так:

dist \ js \ vendor.4ee179da.js 74,69 кб 26,68 кб dist \ js \ app.5e840ed0.js 4,06 кб 1,84 кб dist \ css \ app.4c22f75b.css 161,13 кбайт 21,59 кбайт

Я подозреваю, что мой css.extract должен быть объектом, как

{
            fallback: 'style-loader',
            use: ['css-loader', 'sass-loader']
}

Но добавление этого ломает сборку с новым _ValidationError2.default (ajv.errors, name).

Ниже мое vue.config.js:

const ExtractTextPlugin = require("extract-text-webpack-plugin");

module.exports = {
    // Project deployment base
    // By default we assume your app will be deployed at the root of a domain,
    // e.g. https://www.my-app.com/
    // If your app is deployed at a sub-path, you will need to specify that
    // sub-path here. For example, if your app is deployed at
    // https://www.foobar.com/my-app/
    // then change this to '/my-app/'
    baseUrl: '/',

    // where to output built files
    outputDir: 'dist',

    // whether to use eslint-loader for lint on save.
    // valid values: true | false | 'error'
    // when set to 'error', lint errors will cause compilation to fail.
    lintOnSave: true,

    // use the full build with in-browser compiler?
    // https://vuejs.org/v2/guide/installation.html#Runtime-Compiler-vs-Runtime-only
    compiler: false,

    // generate sourceMap for production build?
    productionSourceMap: true,

    // tweak internal webpack configuration.
    // see https://github.com/vuejs/vue-cli/blob/dev/docs/webpack.md
    chainWebpack: () => {},
    configureWebpack: () => {
        new ExtractTextPlugin('assets/style.css')
    },

    // CSS related options
    css: {
        // extract CSS in components into a single CSS file (only in production)
        // can also be an object of options to pass to extract-text-webpack-plugin
        extract: true,

        // Enable CSS modules for all css / pre-processor files.
        // This option does not affect *.vue files.
        modules: true,

        // enable CSS source maps?
        sourceMap: false,

        // pass custom options to pre-processor loaders. e.g. to pass options to
        // sass-loader, use { sass: { ... } }
        loaderOptions: {
            sass:{
                css: 'css-loader',
                'scss':'css-loader | sass-loader'
            }
        }
    },

    // use thread-loader for babel & TS in production build
    // enabled by default if the machine has more than 1 cores
    parallel: require('os').cpus().length > 1,

    // options for the PWA plugin.
    // see https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-plugin-pwa
    pwa: {},

    // configure webpack-dev-server behavior
    devServer: {
        open: process.platform === 'darwin',
        host: '0.0.0.0',
        port: 8082,
        https: false,
        hotOnly: false,
        // See https://github.com/vuejs/vue-cli/blob/dev/docs/cli-service.md#configuring-proxy
        proxy: null, // string | Object
        before: app => {}
    },

    // options for 3rd party plugins
    pluginOptions: {
        // ...
    }
}

Ответы [ 2 ]

0 голосов
/ 04 октября 2018

Vue CLI 3 фактически использует mini-css-extract-plugin, а не extract-text-webpack-plugin.

Когда вы передаете extract: {filename: 'styles.css'}, вы фактически настраиваете mini-css-extract-plugin. Вы можете увидеть эти документы здесь .

Вы можете установить filename для mini-css-extract-plugin ( документы ). Здесь - это то, куда Вью передает это.

Вы сможете удалить все ссылки на extract-text-webpack-plugin, и ваш код продолжит нормально работать!

0 голосов
/ 09 мая 2018

Исправлено. Вот правильный способ сделать это. В CSS измените извлечение на:

extract: {filename: 'styles.css'}

Я сохранил там объекты loaderOptions, sourceMap и modules, которые, кажется, работают нормально.

...