war*_*ign 8 javascript webpack webpack-2
我有一个这样的项目:
root/
webpack-config.js
app/
app.js
js/
dep.js
core/
module.js
Run Code Online (Sandbox Code Playgroud)
这是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']
}
...
Run Code Online (Sandbox Code Playgroud)
在app.js中,我有:
import local_dep from './js/dep';
import myModule from 'module';
Run Code Online (Sandbox Code Playgroud)
这与webpack 1.x一样正常工作,但是我没有使用webpack 2来解析myModule模块,我得到"找不到模块:无法在...\app中解析模块".
看来modulesDirectories条目被忽略,基本URL对应于条目的文件夹.
如何使用webpack 2正确解析模块?
lag*_*lex 12
来自:http://moduscreate.com/webpack-2-tree-shaking-configuration/
在Webpack 2中,来自root,modulesDirectories和fallback设置的解析器将合并为一个属性 - modules.以下是我们如何在Webpack 2中解析文件和模块位置:
resolve: {
modules: [
path.resolve('./client'),
'node_modules'
]
},
Run Code Online (Sandbox Code Playgroud)
您可以指定多个目录modules,但请确保不要忘记node_modules或npm包依赖项将无法加载.
那么就你的情况而言:
resolve: {
modulesDirectories: ['core']
}
Run Code Online (Sandbox Code Playgroud)
现在需要
resolve: {
modules: ['core'] // also 'node_modules'
}
Run Code Online (Sandbox Code Playgroud)
编辑:正如其他人指出的那样,对于Webpack 2来说,类似这样的方法可以工作:
{
resolve: {
extensions: ['.js', '.jsx'],
modules: ['node_modules', path.resolve(__dirname, 'core')]
},
}
Run Code Online (Sandbox Code Playgroud)
对于Webpack 1,我有一个具有以下条目的设置:
config.resolve = {
// Allows us to include js and jsx files without specifying the extension
extensions: ['', '.jsx', '.js'],
root: [path.resolve('./core')]
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13873 次 |
| 最近记录: |