@@ -16,12 +16,15 @@ var concatCSS = require('gulp-concat-css');
16
16
var derequire = require ( 'gulp-derequire' ) ;
17
17
var flatten = require ( 'gulp-flatten' ) ;
18
18
var gulp = require ( 'gulp' ) ;
19
+ var gulpif = require ( 'gulp-if' ) ;
19
20
var gulpUtil = require ( 'gulp-util' ) ;
20
21
var header = require ( 'gulp-header' ) ;
21
22
var packageData = require ( './package.json' ) ;
22
23
var rename = require ( 'gulp-rename' ) ;
23
24
var runSequence = require ( 'run-sequence' ) ;
25
+ var StatsPlugin = require ( 'stats-webpack-plugin' ) ;
24
26
var through = require ( 'through2' ) ;
27
+ var UglifyJsPlugin = require ( 'uglifyjs-webpack-plugin' ) ;
25
28
var webpackStream = require ( 'webpack-stream' ) ;
26
29
27
30
var fbjsConfigurePreset = require ( 'babel-preset-fbjs/configure' ) ;
@@ -37,9 +40,7 @@ var paths = {
37
40
'!src/**/__tests__/**/*.js' ,
38
41
'!src/**/__mocks__/**/*.js' ,
39
42
] ,
40
- css : [
41
- 'src/**/*.css' ,
42
- ] ,
43
+ css : [ 'src/**/*.css' ] ,
43
44
} ;
44
45
45
46
var babelOptsJS = {
@@ -74,7 +75,6 @@ var COPYRIGHT_HEADER = `/**
74
75
75
76
var buildDist = function ( opts ) {
76
77
var webpackOpts = {
77
- debug : opts . debug ,
78
78
externals : {
79
79
immutable : {
80
80
root : 'Immutable' ,
@@ -103,23 +103,22 @@ var buildDist = function(opts) {
103
103
plugins : [
104
104
new webpackStream . webpack . DefinePlugin ( {
105
105
'process.env.NODE_ENV' : JSON . stringify (
106
- opts . debug ? 'development' : 'production'
106
+ opts . debug ? 'development' : 'production' ,
107
107
) ,
108
108
} ) ,
109
- new webpackStream . webpack . optimize . OccurenceOrderPlugin ( ) ,
110
- new webpackStream . webpack . optimize . DedupePlugin ( ) ,
109
+ new webpackStream . webpack . LoaderOptionsPlugin ( {
110
+ debug : true ,
111
+ } ) ,
112
+ new StatsPlugin (
113
+ '../meta/bundle-size-stats/version-' + packageData . version + '.json' ,
114
+ {
115
+ chunkModules : true ,
116
+ } ,
117
+ ) ,
111
118
] ,
112
119
} ;
113
120
if ( ! opts . debug ) {
114
- webpackOpts . plugins . push (
115
- new webpackStream . webpack . optimize . UglifyJsPlugin ( {
116
- compress : {
117
- hoist_vars : true ,
118
- screw_ie8 : true ,
119
- warnings : false ,
120
- } ,
121
- } )
122
- ) ;
121
+ webpackOpts . plugins . push ( new UglifyJsPlugin ( ) ) ;
123
122
}
124
123
return webpackStream ( webpackOpts , null , function ( err , stats ) {
125
124
if ( err ) {
@@ -153,56 +152,61 @@ gulp.task('flow', function() {
153
152
} ) ;
154
153
155
154
gulp . task ( 'css' , function ( ) {
156
- return gulp
157
- . src ( paths . css )
158
- . pipe ( through . obj ( function ( file , encoding , callback ) {
159
- var contents = file . contents . toString ( ) ;
160
- var replaced = contents . replace (
161
- // Regex based on MakeHasteCssModuleTransform: ignores comments,
162
- // strings, and URLs
163
- / \/ \* .* ?\* \/ | ' (?: \\ .| [ ^ ' ] ) * ' | " (?: \\ .| [ ^ " ] ) * " | u r l \( [ ^ ) ] * \) | ( \. (?: p u b l i c \/ ) ? [ \w - ] * \/ { 1 , 2 } [ \w - ] + ) / g,
164
- function ( match , cls ) {
165
- if ( cls ) {
166
- return cls . replace ( / \/ / g, '-' ) ;
167
- } else {
168
- return match ;
169
- }
170
- }
171
- ) ;
172
- replaced = replaced . replace (
173
- // MakeHasteCssVariablesTransform
174
- / \b v a r \( ( [ \w - ] + ) \) / g,
175
- function ( match , name ) {
176
- var vars = {
177
- 'fig-secondary-text' : '#9197a3' ,
178
- 'fig-light-20' : '#bdc1c9' ,
179
- } ;
180
- if ( vars [ name ] ) {
181
- return vars [ name ] ;
182
- } else {
183
- throw new Error ( 'Unknown CSS variable ' + name ) ;
184
- }
185
- }
186
- ) ;
187
- file . contents = new Buffer ( replaced ) ;
188
- callback ( null , file ) ;
189
- } ) )
190
- . pipe ( concatCSS ( 'Draft.css' ) )
191
- // Avoid rewriting rules *just in case*, just compress
192
- . pipe ( cleanCSS ( { advanced : false } ) )
193
- . pipe ( header ( COPYRIGHT_HEADER , { version : packageData . version } ) )
194
- . pipe ( gulp . dest ( paths . dist ) ) ;
155
+ return ( gulp
156
+ . src ( paths . css )
157
+ . pipe (
158
+ through . obj ( function ( file , encoding , callback ) {
159
+ var contents = file . contents . toString ( ) ;
160
+ var replaced = contents . replace (
161
+ // Regex based on MakeHasteCssModuleTransform: ignores comments,
162
+ // strings, and URLs
163
+ / \/ \* .* ?\* \/ | ' (?: \\ .| [ ^ ' ] ) * ' | " (?: \\ .| [ ^ " ] ) * " | u r l \( [ ^ ) ] * \) | ( \. (?: p u b l i c \/ ) ? [ \w - ] * \/ { 1 , 2 } [ \w - ] + ) / g,
164
+ function ( match , cls ) {
165
+ if ( cls ) {
166
+ return cls . replace ( / \/ / g, '-' ) ;
167
+ } else {
168
+ return match ;
169
+ }
170
+ } ,
171
+ ) ;
172
+ replaced = replaced . replace (
173
+ // MakeHasteCssVariablesTransform
174
+ / \b v a r \( ( [ \w - ] + ) \) / g,
175
+ function ( match , name ) {
176
+ var vars = {
177
+ 'fig-secondary-text' : '#9197a3' ,
178
+ 'fig-light-20' : '#bdc1c9' ,
179
+ } ;
180
+ if ( vars [ name ] ) {
181
+ return vars [ name ] ;
182
+ } else {
183
+ throw new Error ( 'Unknown CSS variable ' + name ) ;
184
+ }
185
+ } ,
186
+ ) ;
187
+ file . contents = new Buffer ( replaced ) ;
188
+ callback ( null , file ) ;
189
+ } ) ,
190
+ )
191
+ . pipe ( concatCSS ( 'Draft.css' ) )
192
+ // Avoid rewriting rules *just in case*, just compress
193
+ . pipe ( cleanCSS ( { advanced : false } ) )
194
+ . pipe ( header ( COPYRIGHT_HEADER , { version : packageData . version } ) )
195
+ . pipe ( gulp . dest ( paths . dist ) ) ) ;
195
196
} ) ;
196
197
197
198
gulp . task ( 'dist' , [ 'modules' , 'css' ] , function ( ) {
198
199
var opts = {
199
200
debug : true ,
200
201
output : 'Draft.js' ,
201
202
} ;
202
- return gulp . src ( './lib/Draft.js' )
203
+ return gulp
204
+ . src ( './lib/Draft.js' )
203
205
. pipe ( buildDist ( opts ) )
204
206
. pipe ( derequire ( ) )
205
- . pipe ( header ( COPYRIGHT_HEADER , { version : packageData . version } ) )
207
+ . pipe (
208
+ gulpif ( '*.js' , header ( COPYRIGHT_HEADER , { version : packageData . version } ) ) ,
209
+ )
206
210
. pipe ( gulp . dest ( paths . dist ) ) ;
207
211
} ) ;
208
212
@@ -211,16 +215,17 @@ gulp.task('dist:min', ['modules'], function() {
211
215
debug : false ,
212
216
output : 'Draft.min.js' ,
213
217
} ;
214
- return gulp . src ( './lib/Draft.js' )
218
+ return gulp
219
+ . src ( './lib/Draft.js' )
215
220
. pipe ( buildDist ( opts ) )
216
- . pipe ( header ( COPYRIGHT_HEADER , { version : packageData . version } ) )
221
+ . pipe (
222
+ gulpif ( '*.js' , header ( COPYRIGHT_HEADER , { version : packageData . version } ) ) ,
223
+ )
217
224
. pipe ( gulp . dest ( paths . dist ) ) ;
218
225
} ) ;
219
226
220
227
gulp . task ( 'check-dependencies' , function ( ) {
221
- return gulp
222
- . src ( 'package.json' )
223
- . pipe ( gulpCheckDependencies ( ) ) ;
228
+ return gulp . src ( 'package.json' ) . pipe ( gulpCheckDependencies ( ) ) ;
224
229
} ) ;
225
230
226
231
gulp . task ( 'watch' , function ( ) {
@@ -232,5 +237,11 @@ gulp.task('dev', function() {
232
237
} ) ;
233
238
234
239
gulp . task ( 'default' , function ( cb ) {
235
- runSequence ( 'check-dependencies' , 'clean' , [ 'modules' , 'flow' ] , [ 'dist' , 'dist:min' ] , cb ) ;
240
+ runSequence (
241
+ 'check-dependencies' ,
242
+ 'clean' ,
243
+ [ 'modules' , 'flow' ] ,
244
+ [ 'dist' , 'dist:min' ] ,
245
+ cb ,
246
+ ) ;
236
247
} ) ;
0 commit comments