-
Notifications
You must be signed in to change notification settings - Fork 47k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add build process to all addons (#9946)
* Build createFragment addon * Tack the addon onto React.addons object * Generalize build process for all addons * Fix lint * Fix lint again
- Loading branch information
Showing
32 changed files
with
4,722 additions
and
279 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,73 @@ | ||
/** | ||
* Copyright 2015-present, Facebook, Inc. | ||
* All rights reserved. | ||
* | ||
* This source code is licensed under the BSD-style license found in the | ||
* LICENSE file in the root directory of this source tree. An additional grant | ||
* of patent rights can be found in the PATENTS file in the same directory. | ||
* | ||
* @emails react-core | ||
*/ | ||
|
||
'use strict'; | ||
|
||
var fs = require('fs'); | ||
var path = require('path'); | ||
|
||
// This lets us import Webpack config without crashing | ||
process.env.NODE_ENV = 'development'; | ||
|
||
// This script runs from the addon folder | ||
var exportName = require(path.resolve(process.cwd(), './webpack.config')).output | ||
.library; | ||
var packageName = path.basename(process.cwd()); | ||
|
||
if (packageName.indexOf('react-addons') !== 0) { | ||
throw new Error( | ||
'Only run this script for packages that used to be published as addons.' | ||
); | ||
} | ||
|
||
// Inputs | ||
// DEV: root["exportName"] = factory(root["React"]) | ||
// PROD: e.exportName=t(e.React) | ||
var find = new RegExp( | ||
'((?!exports)\\b\\w+)(\\["' + | ||
exportName + | ||
'"\\]|\\.' + | ||
exportName + | ||
')\\s*=\\s*(\\w+)\\((.*)\\)' | ||
); | ||
// Outputs | ||
// DEV: (root.React ? (root.React.addons = root.React.addons || {}) : /* throw */).exportName = factory(/* ... */); | ||
// PROD: (e.React ? (e.React.addons = e.React.addons || {}) : /* throw */).exportName = t(/* ... */) | ||
var throwIIFE = [ | ||
'(function(){', | ||
'throw new Error("' + | ||
packageName + | ||
' could not find the React object. If you are using script tags, make sure that React is being loaded before ' + | ||
packageName + | ||
'.")', | ||
'})()', | ||
].join(''); | ||
var replace = | ||
'($1.React?($1.React.addons=$1.React.addons||{}):' + | ||
throwIIFE + | ||
').' + | ||
exportName + | ||
'=$3($4)'; | ||
|
||
console.log('Tweaking the development UMD...'); | ||
var devUMD = fs.readFileSync('./' + packageName + '.js', 'utf8').toString(); | ||
devUMD = devUMD.replace(find, replace); | ||
fs.writeFileSync('./' + packageName + '.js', devUMD); | ||
|
||
console.log('Tweaking the production UMD...'); | ||
var prodUMD = fs | ||
.readFileSync('./' + packageName + '.min.js', 'utf8') | ||
.toString(); | ||
prodUMD = prodUMD.replace(find, replace); | ||
fs.writeFileSync('./' + packageName + '.min.js', prodUMD); | ||
|
||
console.log('Done.'); | ||
console.log('Note that you need to manually test the UMD builds.'); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
react-addons-create-fragment.js | ||
react-addons-create-fragment.min.js |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,63 @@ | ||
/** | ||
* Copyright 2013-present, Facebook, Inc. | ||
* All rights reserved. | ||
* | ||
* This source code is licensed under the BSD-style license found in the | ||
* LICENSE file in the root directory of this source tree. An additional grant | ||
* of patent rights can be found in the PATENTS file in the same directory. | ||
* | ||
* @emails react-core | ||
*/ | ||
|
||
'use strict'; | ||
|
||
const webpack = require('webpack'); | ||
|
||
let __DEV__; | ||
switch (process.env.NODE_ENV) { | ||
case 'development': | ||
__DEV__ = true; | ||
break; | ||
case 'production': | ||
__DEV__ = false; | ||
break; | ||
default: | ||
throw new Error('Unknown environment.'); | ||
} | ||
|
||
module.exports = { | ||
entry: './index', | ||
output: { | ||
library: 'createFragment', | ||
libraryTarget: 'umd', | ||
filename: __DEV__ | ||
? 'react-addons-create-fragment.js' | ||
: 'react-addons-create-fragment.min.js', | ||
}, | ||
externals: { | ||
react: { | ||
root: 'React', | ||
commonjs2: 'react', | ||
commonjs: 'react', | ||
amd: 'react', | ||
}, | ||
}, | ||
plugins: [ | ||
new webpack.DefinePlugin({ | ||
'process.env.NODE_ENV': __DEV__ ? '"development"' : '"production"', | ||
}), | ||
].concat( | ||
__DEV__ | ||
? [] | ||
: [ | ||
new webpack.optimize.UglifyJsPlugin({ | ||
compress: { | ||
warnings: false, | ||
}, | ||
output: { | ||
comments: false, | ||
}, | ||
}), | ||
] | ||
), | ||
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
react-addons-linked-state-mixin.js | ||
react-addons-linked-state-mixin.min.js |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.