私はこのようなプロジェクトを持っています:
root/
webpack-config.js
app/
app.js
js/
dep.js
core/
module.js
Webpackの設定ファイルは次のとおりです。
module.exports = {
entry: './app/app.js',
output: {
path: __dirname,
filename: "[name]-bundle.js"
},
module: {
loaders: [
{ test: /\.js$/, loader: 'babel-loader', exclude: /node_modules/ }
]
},
resolve: {
modulesDirectories: ['core']
}
...
app.jsには、次のものがあります。
import local_dep from './js/dep';
import myModule from 'module';
これはwebpack1.xで期待どおりに機能しますが、myModuleモジュールがwebpack 2で解決されないため、「モジュールが見つかりません:...\appで 'モジュール'を解決できません」というメッセージが表示されます。
ModulesDirectoriesエントリは無視され、ベースURLはエントリのフォルダに対応しているようです。
Webpack 2でモジュールを正しく解決するにはどうすればよいですか?
編集:他の人が指摘しているように、Webpack 2の場合、次のように機能します。
{
resolve: {
extensions: ['.js', '.jsx'],
modules: ['node_modules', path.resolve(__dirname, 'core')]
},
}
Webpack 1の場合、次のエントリを持つセットアップがあります。
config.resolve = {
// Allows us to include js and jsx files without specifying the extension
extensions: ['', '.jsx', '.js'],
root: [path.resolve('./core')]
};
差出人: http://moduscreate.com/webpack-2-tree-shaking-configuration/
Webpack 2では、root
、modulesDirectories
、およびfallback
設定のリゾルバーは、単一のプロパティmodules
にマージされます。 Webpack2でファイルとモジュールの場所を解決する方法は次のとおりです。
resolve: {
modules: [
path.resolve('./client'),
'node_modules'
]
},
modules
でディレクトリの数を指定できますが、node_modules
を忘れないようにしてください。そうしないと、npmパッケージの依存関係の読み込みに失敗します。
だからあなたの場合、以前は何でしたか:
resolve: {
modulesDirectories: ['core']
}
今はする必要があります
resolve: {
modules: ['core'] // also 'node_modules'
}