【发布时间】:2017-01-10 19:33:19
【问题描述】:
我正在尝试使用 NODE.env 来确定天气我想用 webpack 缩小我的 JS,当我手动在 js 中设置 env 时它确实有效,但我认为我也可以将它集成到我的默认值中并构建任务。不知怎的,它不起作用。
package.json
.
.
.
"scripts": {
"dev": "gulp",
"build": "gulp build"
}
Gulpfile.js:
'use strict';
const gulp = require('gulp'),
// cleanCSS = require('gulp-clean-css'),
webpack = require('webpack-stream'),
pkg = require('./package.json'),
$ = require('gulp-load-plugins')({
pattern: ['*'],
scope: ['devDependencies']
}),
onError = (err) => {
$.notify.onError({
title: 'Gulp',
subtitle: 'Failure!',
message: '\n' + '\n' + 'Error: <%= error.message %>',
sound: 'Frog'
})(err);
};
/**
* Static Server + watching scss/html files
*/
gulp.task('serve', ['scss', 'webpack'], () => {
$.browserSync.init({
server: pkg.paths.src.base
});
gulp.watch(pkg.paths.src.scss + pkg.vars.scssPattern, ['scss']);
gulp.watch(pkg.paths.src.js + pkg.vars.jsPattern, ['webpack']);
gulp.watch('src/*.html').on('change', $.browserSync.reload);
});
// Compile sass into CSS & auto-inject into browsers
gulp.task('scss', () => {
return gulp.src(pkg.paths.src.scss + pkg.vars.scssName)
.pipe($.newer(pkg.paths.src.assets + pkg.vars.siteCssName))
.pipe($.plumber({ errorHandler: onError }))
.pipe($.sourcemaps.init())
.pipe($.sass.sync())
.pipe($.sourcemaps.write())
.pipe($.autoprefixer({
browsers: ['last 2 versions'],
cascade: false
}))
.pipe($.rename({suffix: '.min'}))
.pipe(gulp.dest(pkg.paths.src.assets))
.pipe($.notify({
title: 'Gulp',
subtitle: 'Success!',
message: 'Scss task completed!',
sound: 'Pop'
}))
.pipe($.browserSync.stream());
});
// concat translate and minify js
gulp.task('webpack', () => {
return gulp.src(pkg.paths.src.js + pkg.vars.jsName)
.pipe($.newer(pkg.paths.src.assets + pkg.vars.siteJsName))
.pipe($.plumber({ errorHandler: onError }))
.pipe(webpack(require('./webpack.config.js')))
.pipe(gulp.dest(pkg.paths.src.assets))
.pipe($.browserSync.stream());
});
gulp.task('default', ['serve'], () => {
return process.env.NODE_ENV === 'dev';
});
gulp.task('build', ['serve'], () => {
return process.env.NODE_ENV === 'prod';
});
webpack.config.js:
const webpack = require('webpack'),
pkg = require('./package.json'),
debug = process.env.NODE_ENV !== 'prod';
module.exports = {
context: __dirname,
devtool: debug ? 'inline-sourcemap' : null,
entry: pkg.paths.src.js + pkg.vars.jsName,
output: {
path: __dirname + pkg.paths.src.assets,
filename: pkg.vars.siteJsName
},
module: {
loaders: [
{
test: /(\.jsx|\.js)$/,
loader: 'babel',
exclude: /node_modules/
},
{
test: /(\.jsx|\.js)$/,
loader: 'eslint-loader',
exclude: /node_modules/
}
]
},
plugins: debug ? [] : [
new webpack.optimize.DedupePlugin(),
new webpack.optimize.OccurenceOrderPlugin(),
new webpack.optimize.UglifyJsPlugin({ mangle: false, sourcemap: false })
]
};
【问题讨论】:
标签: javascript node.js gulp webpack