2016-11-03 19 views
1

Webpackは、私が意図していないファイル、およびインポートしていないファイルを解析しています。その結果、それらのファイルに無効なインポートに関するエラーがスローされます。ビルド中に気にしたくないエラーです。私の最新のビルドから例えばWebpackはインポートされていないファイルを作成します

、:プロファイリングから示すように、ファイルは、どこにも輸入されていないが

ERROR in ./src/app.e2e.ts 
(1,23): error TS2307: Cannot find module 'protractor'. 

。プリフェッチされていますが、プリフェッチプラグインは設定されていません。

enter image description here

のWebPACKの設定:

webpack.dev.js

var webpack = require('webpack'); 
var webpackMerge = require('webpack-merge'); 
var ExtractTextPlugin = require('extract-text-webpack-plugin'); 
var ManifestRevisionPlugin = require('manifest-revision-webpack-plugin'); 
var commonConfig = require('./webpack.common.js'); 
var helpers = require('./helpers'); 

const ENV = process.env.NODE_ENV = process.env.ENV = 'production'; 

module.exports = webpackMerge(commonConfig, { 
    devtool: 'source-map', 

    output: { 
    path: helpers.root('dist'), 
    publicPath: '/static/', 
    filename: '[name].[hash].js', 
    chunkFilename: '[id].[hash].chunk.js' 
    }, 

    htmlLoader: { 
    minimize: false // workaround for ng2 
    }, 

    plugins: [ 
    new webpack.NoErrorsPlugin(), 
    new webpack.optimize.DedupePlugin(), 
    new webpack.optimize.UglifyJsPlugin(), 
    new ExtractTextPlugin('[name].[hash].css'), 
    new webpack.DefinePlugin({ 
     'process.env': { 
     'ENV': JSON.stringify(ENV) 
     } 
    }), 

    new ManifestRevisionPlugin(helpers.root('dist', 'manifest.json'), { 
     rootAssetPath: 'src' 
    }) 
    ] 
}); 

webpack.common.js

var webpack = require('webpack'); 
var ExtractTextPlugin = require('extract-text-webpack-plugin'); 
var helpers = require('./helpers'); 

module.exports = { 
    entry: { 
    'polyfills': './src/polyfills.ts', 
    'vendor': './src/vendor.ts', 
    'app': './src/main.ts' 
    }, 

    resolve: { 
    extensions: ['', '.js', '.ts'] 
    }, 

    module: { 
    loaders: [ 
     { 
     test: /\.ts$/, 
     loaders: ['ts', 'angular2-template-loader'], 
     }, 
     { 
     test: /\.html$/, 
     exclude: helpers.root('src', 'partials'), 
     loader: 'html' 
     }, 
     { 
     test: /\.html$/, 
     include: helpers.root('src', 'partials'), 
     loader: 'ngtemplate?relativeTo=' + helpers.root('src') + '&prefix=static!html' 
     }, 
     { 
     test: /\.css$/, 
     exclude: helpers.root('src', 'app'), 
     loader: ExtractTextPlugin.extract('style', 'css?sourceMap') 
     }, 
     { 
     test: /\.css$/, 
     include: helpers.root('src', 'app'), 
     loader: 'raw' // for angular2-template-loader 
     }, 
     { 
     test: /\.(png|jpe?g|gif|svg|woff|woff2|ttf|eot|ico)$/, 
     loader: 'file?name=assets/[name].[hash].[ext]' 
     } 
    ] 
    }, 

    plugins: [ 
    new webpack.ProvidePlugin({ 
     $: "jquery", 
     jQuery: "jquery", 
     jquery: "jquery", 
     _: "underscore", 
     io: "socket.io-client" 
    }), 

    new webpack.optimize.CommonsChunkPlugin({ 
     name: ['app', 'vendor', 'polyfills'] 
    }), 

    new webpack.DefinePlugin({ 
     'RADREPORT_VERSION': JSON.stringify(helpers.loadFile('VERSION.txt')) 
    }) 
    ] 
}; 

答えて

1

ManifestRevisionPluginrootAssetPathに関係しています。

私は現在のWebPACKの設定のentry セクションの下に記載されていない資産を検出する 道を歩むために内部的にそれを使用するので、それはrootAssetPathを必要とします。

1つのjavascriptエントリファイルといくつかのスタイルシート (あなたのメインアプリ、ベンダーシートなど)があるとします。これはうまくやわらかいですが、 イメージが40枚あればどうなりますか? イメージのリストをそこに保管するのは無理ですが、そこにリストされていなければ、 webpackは本当にそれらのファイルをどうすれば理解できません。

私はルートパスを歩き、何も無視します。 ignorePaths。見つかったファイルごとに、ファイルのパス上で webpack.PrefetchPluginを内部的に呼び出します。これにより、ファイル にmd5またはウェブパックの設定( 以外)で選択したファイルにタグを付けてファイルを発行させることができます。

https://github.com/nickjj/manifest-revision-webpack-plugin/issues/2#issuecomment-108029177

関連する問題