Не работает плагин copy-webpack-plugin при сборке

309
22 июня 2017, 06:48

Решил на новом компьютер склонировать проект, который правильно собирался на старом. Методом проб и ошибок определил, что не срабатывает copy-webpack-plugin при сборке проекта. Все остальное срабатывает.
'app/assets/iframes' не копируется в 'assets/iframes',
'app/assets/locale' не копируется в 'angular/i18n'

Вот код конфига

'use strict';
// Depends
var path = require('path');
var webpack = require('webpack');
var Manifest = require('manifest-revision-webpack-plugin');
var TextPlugin = require('extract-text-webpack-plugin');
var autoprefixer = require('autoprefixer-core');
var CopyWebpackPlugin = require('copy-webpack-plugin');
var discardDuplicates = require('postcss-discard-duplicates');
var discardComments = require('postcss-discard-comments');
var HtmlPlugin = require('html-webpack-plugin');
/**
 * Global webpack config
 * @param  {[type]} _path [description]
 * @return {[type]}       [description]
 */
module.exports = function (_path) {
    // define local variables
    var rootAssetPath = _path + 'app';
    // return objecy
    return {
        // entry points
        entry: {
            application: _path + '/app/index.js',
            vendors: ['jquery', 'lodash',
                'angular',
                'angular-messages',
                'angular-animate',
                'angular-ui-router',
                'angular-ui-mask',
                'angular-translate',
                'angular-translate-loader-static-files',
                'restangular',
                'angular-sanitize',
                'angulartics',
                'angulartics-google-analytics',
                'angulartics-piwik'
            ]
        },
        // output system
        output: {
            path: path.join(_path, 'dist'),
            filename: path.join('assets', 'js', '[name].bundle.[chunkhash].js'),
            chunkFilename: '[id].bundle.[chunkhash].js',
            publicPath: '/'
        },
        // resolves modules
        resolve: {
            extensions: ['', '.js'],
            modulesDirectories: ['node_modules'],
            alias: {
                _svg: path.join(_path, 'app', 'assets', 'svg'),
                _data: path.join(_path, 'app', 'data'),
                _fonts: path.join(_path, 'app', 'assets', 'fonts'),
                _modules: path.join(_path, 'app', 'modules'),
                _pages: path.join(_path, 'app', 'pages'),
                _images: path.join(_path, 'app', 'assets', 'images'),
                _stylesheets: path.join(_path, 'app', 'assets', 'stylesheets'),
                _templates: path.join(_path, 'app', 'assets', 'templates')
            }
        },
        // resolve loaders
        resolveLoader: {
            modulesDirectories: ['node_modules'],
            moduleTemplates: ['*-loader', '*'],
            extensions: ['', '.js']
        },
        // modules resolvers
        module: {
            loaders: [
                {
                    test: /jquery\.js$/,
                    loader: 'expose?jQuery'
                },
                {
                    test: /\.html$/,
                    loader: "ng-cache?prefix=[dir]/[dir]"
                },
                {
                    test: /\.css/,
                    loader: TextPlugin.extract('style', 'css')
                },
                {
                    test: /\.sass$/,
                    loader: TextPlugin.extract('style', 'css?sourceMap!postcss!sass?indentedSyntax=true&sourceComments=true')
                },
                {
                    test: /\.scss$/,
                    loader: TextPlugin.extract('style', 'css?sourceMap!postcss!sass?sourceComments=true')
                },
                {
                    test: /\.(ttf|eot|woff|woff2|png|jpg|jpeg|gif|svg)$/i,
                    loaders: ['file?context=' + rootAssetPath + '&name=assets/static/[ext]/[name].[hash].[ext]']
                },
                {
                    test: /\.ico$/,
                    loader: 'file?name=[name].[ext]'
                },
                {
                    test: /\.(json)$/i,
                    loaders: ['file?context=' + rootAssetPath + '&name=data/[name].[ext]']
                },
                //Font awesome loader config
                {
                    test: /\.woff(2)?(\?v=[0-9]\.[0-9]\.[0-9])$/,
                    loader: 'url?limit=10000&mimetype=application/font-woff'
                },
                {
                    test: /\.(ttf|eot|svg)(\?v=[0-9]\.[0-9]\.[0-9])$/,
                    loaders: ['file?context=' + rootAssetPath + '&name=assets/static/[ext]/[name].[hash].[ext]']
                }
            ]
        },
        sassLoader: {
            precision: 8
        },
        // post css
        postcss: [autoprefixer({browsers: ['last 5 versions']})],
        //Add to prod env
        //postcss: [autoprefixer({browsers: ['last 5 versions']}), discardDuplicates, discardComments],
        // load plugins
        plugins: [
            new webpack.EnvironmentPlugin('NODE_ENV'),
            new webpack.ProvidePlugin({
                $: 'jquery',
                jQuery: 'jquery',
                'window.jQuery': 'jquery'
            }),
            new CopyWebpackPlugin([
                {from: 'app/assets/iframes', to: 'assets/iframes'},
                {from: 'app/assets/locale', to: 'angular/i18n'}
            ]),
            new webpack.optimize.CommonsChunkPlugin('vendors', 'assets/js/vendors.[chunkhash].js'),
            new TextPlugin('assets/css/[name].[chunkhash].css'),
            new Manifest(path.join(_path + '/config', 'manifest.json'), {
                rootAssetPath: rootAssetPath,
                ignorePaths: ['.DS_Store']
            }),
            // create instance for entrypoint index.html building
            new HtmlPlugin({
                title: 'FINT.online',
                chunks: ['application', 'vendors'],
                filename: 'index.html',
                template: path.join(_path, 'app', 'assets', 'templates', 'index.html')
            })
        ]
    };
};
Answer 1

Вот буквально только что бился об него лбом) попробуйте так, у меня завелось -

new CopyWebpackPlugin([
    {
        context: path.resolve(__dirname, 'app')
        from: 'assets/iframes/', 
        to: 'assets/iframes/'
    },
    {
        context: path.resolve(__dirname, 'app')
        from: 'assets/locale/', 
        to: 'angular/i18n/'
    }
])
READ ALSO
javascript создание нового массива

javascript создание нового массива

У меня есть массив чисел [65, 44, 12, 4], Мне надо получить новый массив в котором будет сложение цифр каждого элемента массива

179
Не срабатывает аутентификация

Не срабатывает аутентификация

Привет всем! Помогите пожалуйста найти ошибку

243
yii2 проблемы с установкой

yii2 проблемы с установкой

Установил Composer, обновил его, установил yii2, перехожу в браузер для проверки,а вместо "приветствия" выдает следующие ошибки :

267
Как вывести только уникальные метки wordpress?

Как вывести только уникальные метки wordpress?

Как вывести только уникальные метки wordpress?

220