【发布时间】:2016-04-23 18:18:01
【问题描述】:
我正在尝试将 webpack+babel-loader 与一种模式一起使用,该模式使我的构建器项目与我的应用程序源项目分开。
基本上:
/builder-project/build.js
/app-project/app.js
在build.js:
var webpack = require('webpack');
var compiler = webpack({
entry : './../app/app.js',
output : {
filename : 'out.js'
},
bail : true,
module: {
loaders: [
{
test: /\.jsx?$/,
exclude: /(node_modules|bower_components)/,
loader: 'babel-loader',
query: {
presets: ['es2015']
}
}
]
}
});
compiler.run(function(err, stats) {
console.log(err);
});
而app.js 包含一个基本的 ES6 模块。
在运行build.js 时,我无法摆脱Couldn't find preset "es2015" relative to directory [absolute-path-on-my-machine]/app-project。所以基本上它是在寻找支持 babel-loader 相对于我的入口点路径的 npm 模块,而不是构建脚本。
我已经在 webpack 配置中尝试了 context 和 resolve 解析,但 webpack/babel-loader 似乎无法加载相对于我的入口点的内容。对我来说,保持库路径相对于构建脚本而不是入口点会更有意义,但也许事情不是这样设计的?
更新
所以@nils 下面的答案肯定解决了眼前的问题。然而,同样的问题在第二个包含的模块中再次发生。我没有在上面包含它的来源,但请看一下:
app.js:
import Factory from './../../vendor/factory-project/factory.js';
var App = Factory.define({
//...
});
export default App;
factory-project 文件夹用npm 初始化,并有一个node_modules。当我运行构建时,虽然加载器现在在app.js 上运行良好,但在处理其中的import 时会抛出与以前相同的错误:Couldn't find preset "es2015" relative to directory [some-path-on-my-machine]/factory-project。看起来即使使用resolveLoader(如答案中所示),在包含使用npm 初始化的项目文件夹中的文件时,它似乎也被忽略了。
更新 2
有一个已知的错误导致此问题。请参阅下面的解决方法。
【问题讨论】:
标签: webpack ecmascript-6 babeljs