【发布时间】:2017-05-09 21:02:25
【问题描述】:
我想用 webpack 重现这个 Gulp 脚本,让只有一个进程监听文件,但我无法让它工作。这是我的 Gulp 任务
gulp.task('scripts', function(){
return gulp.src( WATCH_SCRIPTS.SCRIPTS )
.pipe(plumber())
.pipe(sourcemaps.init())
.pipe(concat('plugins.min.js'))
.pipe(babel({ compact: false, babelrc: false, presets: ['es2015-allow-top-level-this'] }))
.pipe(ifElse(PROD_ENV,
() => {return uglify({
hoist_vars: true,
global_defs: {
jQuery: false,
$: false,
}
})},
() => {return sourcemaps.write('./')}
))
.pipe(plumber.stop())
.pipe(gulp.dest(BUILD_PATH + '/js'));
});
我尝试使用暴露加载器,但它总是会丢失一些依赖项。
{
name: 'scripts',
target: 'web',
entry: glob.sync('./src/assets/js/**/*.js'),
devtool: 'cheap-module-eval-source-map',
output: {
path: path.resolve(__dirname, 'public/js/'),
filename: 'plugins.min.js',
sourceMapFilename: 'plugins.min.js.map',
},
module: {
rules: [
{
test: /[\/]global\.js$/,
use: [{
loader: 'expose-loader',
options: 'Materialize'
}]
},
{
test: /[\/]jquery\.js$/,
use: [{
loader: 'expose-loader',
options: 'jQuery'
},{
loader: 'expose-loader',
options: '$'
}]
}
]
}
}
我尝试使用带有预设的 babel-loader(就像在 gulp 任务中一样)
presets: ['es2015-allow-top-level-this']
从该文件https://github.com/Dogfalo/materialize/blob/master/js/global.js 中未定义Materialize。
我可以只听文件更改并启动我的gulp scripts 还是有办法直接连接文件?我对 webpack 2 很陌生。
谢谢
【问题讨论】: