开源 企业版 高校版 私有云 模力方舟 AI 队友
代码拉取完成,页面将自动刷新
捐赠
捐赠前请先登录
扫描微信二维码支付
取消
支付完成
支付提示
将跳转至支付宝完成支付
确定
取消
1 Star 0 Fork 0

wf/react

加入 Gitee
与超过 1400万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
已有帐号? 立即登录
文件
master
分支 (30)
标签 (107)
master
facts
gaearon-patch-3
revert-14643-fun-sm-hooks
revert-14648-ctx-bad
lazy-wip
revert-14218-memory-leak-on-unmount
gaearon-patch-2
16.3-dev
yeswork
gaearon-patch-1
revert-13535-simpify-some-logic
radio-click
16.4.2-dev
is-renderable
15.6-dev
poc-event-registration
lazy-raf-warning
gh-pages
15-stable
v16.8.0-alpha.1
v16.7.0
v16.7.0-alpha.1
v16.6.3
v16.6.1
v16.6.0
v16.6.0-alpha.8af6728
v16.6.0-alpha.400d197
v16.5.2
v16.6.0-alpha.0
v16.5.1
v16.5.0
v16.4.2
v16.4.1
v16.4.0
v16.3.2
v16.3.1
v16.3.0
v16.3.0-rc.0
v16.3.0-alpha.3
master
分支 (30)
标签 (107)
master
facts
gaearon-patch-3
revert-14643-fun-sm-hooks
revert-14648-ctx-bad
lazy-wip
revert-14218-memory-leak-on-unmount
gaearon-patch-2
16.3-dev
yeswork
gaearon-patch-1
revert-13535-simpify-some-logic
radio-click
16.4.2-dev
is-renderable
15.6-dev
poc-event-registration
lazy-raf-warning
gh-pages
15-stable
v16.8.0-alpha.1
v16.7.0
v16.7.0-alpha.1
v16.6.3
v16.6.1
v16.6.0
v16.6.0-alpha.8af6728
v16.6.0-alpha.400d197
v16.5.2
v16.6.0-alpha.0
v16.5.1
v16.5.0
v16.4.2
v16.4.1
v16.4.0
v16.3.2
v16.3.1
v16.3.0
v16.3.0-rc.0
v16.3.0-alpha.3
克隆/下载
克隆/下载
提示
下载代码请复制以下命令到终端执行
为确保你提交的代码身份被 Gitee 正确识别,请执行以下命令完成配置
初次使用 SSH 协议进行代码克隆、推送等操作时,需按下述提示完成 SSH 配置
1 生成 RSA 密钥
2 获取 RSA 公钥内容,并配置到 SSH公钥
在 Gitee 上使用 SVN,请访问 使用指南
使用 HTTPS 协议时,命令行会出现如下账号密码验证步骤。基于安全考虑,Gitee 建议 配置并使用私人令牌 替代登录密码进行克隆、推送等操作
Username for 'https://gitee.com': userName
Password for 'https://userName@gitee.com': # 私人令牌
master
分支 (30)
标签 (107)
master
facts
gaearon-patch-3
revert-14643-fun-sm-hooks
revert-14648-ctx-bad
lazy-wip
revert-14218-memory-leak-on-unmount
gaearon-patch-2
16.3-dev
yeswork
gaearon-patch-1
revert-13535-simpify-some-logic
radio-click
16.4.2-dev
is-renderable
15.6-dev
poc-event-registration
lazy-raf-warning
gh-pages
15-stable
v16.8.0-alpha.1
v16.7.0
v16.7.0-alpha.1
v16.6.3
v16.6.1
v16.6.0
v16.6.0-alpha.8af6728
v16.6.0-alpha.400d197
v16.5.2
v16.6.0-alpha.0
v16.5.1
v16.5.0
v16.4.2
v16.4.1
v16.4.0
v16.3.2
v16.3.1
v16.3.0
v16.3.0-rc.0
v16.3.0-alpha.3
react
/
scripts
/
release
/
utils.js
react
/
scripts
/
release
/
utils.js
utils.js 6.32 KB
一键复制 编辑 原始数据 按行查看 历史
'use strict';
const {exec} = require('child-process-promise');
const {createPatch} = require('diff');
const {hashElement} = require('folder-hash');
const {readdirSync, readFileSync, statSync, writeFileSync} = require('fs');
const {readJson, writeJson} = require('fs-extra');
const logUpdate = require('log-update');
const {join} = require('path');
const createLogger = require('progress-estimator');
const prompt = require('prompt-promise');
const theme = require('./theme');
// https://www.npmjs.com/package/progress-estimator#configuration
const logger = createLogger({
storagePath: join(__dirname, '.progress-estimator'),
});
const confirm = async message => {
const confirmation = await prompt(theme`\n{caution ${message}} (y/N) `);
prompt.done();
if (confirmation !== 'y' && confirmation !== 'Y') {
console.log(theme`\n{caution Release cancelled.}`);
process.exit(0);
}
};
const execRead = async (command, options) => {
const {stdout} = await exec(command, options);
return stdout.trim();
};
const getBuildInfo = async () => {
const cwd = join(__dirname, '..', '..');
const branch = await execRead('git branch | grep \\* | cut -d " " -f2', {
cwd,
});
const commit = await execRead('git show -s --format=%h', {cwd});
const checksum = await getChecksumForCurrentRevision(cwd);
const version = `0.0.0-${commit}`;
// Only available for Circle CI builds.
// https://circleci.com/docs/2.0/env-vars/
const buildNumber = process.env.CIRCLE_BUILD_NUM;
// React version is stored explicitly, separately for DevTools support.
// See updateVersionsForCanary() below for more info.
const packageJSON = await readJson(
join(cwd, 'packages', 'react', 'package.json')
);
const reactVersion = `${packageJSON.version}-canary-${commit}`;
return {branch, buildNumber, checksum, commit, reactVersion, version};
};
const getChecksumForCurrentRevision = async cwd => {
const packagesDir = join(cwd, 'packages');
const hashedPackages = await hashElement(packagesDir, {
encoding: 'hex',
files: {exclude: ['.DS_Store']},
});
return hashedPackages.hash.slice(0, 7);
};
const getPublicPackages = () => {
const packagesRoot = join(__dirname, '..', '..', 'packages');
return readdirSync(packagesRoot).filter(dir => {
const packagePath = join(packagesRoot, dir, 'package.json');
if (dir.charAt(0) !== '.' && statSync(packagePath).isFile()) {
const packageJSON = JSON.parse(readFileSync(packagePath));
return packageJSON.private !== true;
}
return false;
});
};
const handleError = error => {
logUpdate.clear();
const message = error.message.trim().replace(/\n +/g, '\n');
const stack = error.stack.replace(error.message, '');
console.log(theme`{error ${message}}\n\n{path ${stack}}`);
process.exit(1);
};
const logPromise = async (promise, text, estimate) =>
logger(promise, text, {estimate});
const printDiff = (path, beforeContents, afterContents) => {
const patch = createPatch(path, beforeContents, afterContents);
const coloredLines = patch
.split('\n')
.slice(2) // Trim index file
.map((line, index) => {
if (index <= 1) {
return theme.diffHeader(line);
}
switch (line[0]) {
case '+':
return theme.diffAdded(line);
case '-':
return theme.diffRemoved(line);
case '':
return line;
case '@':
return null;
case '\\':
return null;
}
})
.filter(line => line);
console.log(coloredLines.join('\n'));
return patch;
};
// This method is used by both local Node release scripts and Circle CI bash scripts.
// It updates version numbers in package JSONs (both the version field and dependencies),
// As well as the embedded renderer version in "packages/shared/ReactVersion".
// Canaries version numbers use the format of 0.0.0-<sha> to be easily recognized (e.g. 0.0.0-57239eac8).
// A separate "React version" is used for the embedded renderer version to support DevTools,
// since it needs to distinguish between different version ranges of React.
// It is based on the version of React in the local package.json (e.g. 16.6.1-canary-57239eac8).
// Both numbers will be replaced if the canary is promoted to a stable release.
const updateVersionsForCanary = async (cwd, reactVersion, version) => {
const packages = getPublicPackages(join(cwd, 'packages'));
const packagesDir = join(cwd, 'packages');
// Update the shared React version source file.
// This is bundled into built renderers.
// The promote script will replace this with a final version later.
const sourceReactVersionPath = join(cwd, 'packages/shared/ReactVersion.js');
const sourceReactVersion = readFileSync(
sourceReactVersionPath,
'utf8'
).replace(
/module\.exports = '[^']+';/,
`module.exports = '${reactVersion}';`
);
writeFileSync(sourceReactVersionPath, sourceReactVersion);
// Update the root package.json.
// This is required to pass a later version check script.
{
const packageJSONPath = join(cwd, 'package.json');
const packageJSON = await readJson(packageJSONPath);
packageJSON.version = version;
await writeJson(packageJSONPath, packageJSON, {spaces: 2});
}
for (let i = 0; i < packages.length; i++) {
const packageName = packages[i];
const packagePath = join(packagesDir, packageName);
// Update version numbers in package JSONs
const packageJSONPath = join(packagePath, 'package.json');
const packageJSON = await readJson(packageJSONPath);
packageJSON.version = version;
// Also update inter-package dependencies.
// Canary releases always have exact version matches.
// The promote script may later relax these (e.g. "^x.x.x") based on source package JSONs.
const {dependencies, peerDependencies} = packageJSON;
for (let j = 0; j < packages.length; j++) {
const dependencyName = packages[j];
if (dependencies && dependencies[dependencyName]) {
dependencies[dependencyName] = version;
}
if (peerDependencies && peerDependencies[dependencyName]) {
peerDependencies[dependencyName] = version;
}
}
await writeJson(packageJSONPath, packageJSON, {spaces: 2});
}
};
module.exports = {
confirm,
execRead,
getBuildInfo,
getChecksumForCurrentRevision,
getPublicPackages,
handleError,
logPromise,
printDiff,
theme,
updateVersionsForCanary,
};
Loading...
举报
举报成功
我们将于2个工作日内通过站内信反馈结果给你!
请认真填写举报原因,尽可能描述详细。
请选择举报类型
取消
发送
误判申诉

此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。

如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。

取消
提交

简介

A declarative, efficient, and flexible JavaScript library for building user interfaces.
取消

发行版

暂无发行版

贡献者

全部

近期动态

不能加载更多了
编辑仓库简介
简介内容
主页
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
JavaScript
1
https://gitee.com/ffgit/react.git
git@gitee.com:ffgit/react.git
ffgit
react
react
master
点此查找更多帮助

搜索帮助

评论
仓库举报
回到顶部
登录提示
该操作需登录 Gitee 帐号,请先登录后再操作。
立即登录
没有帐号,去注册

AltStyle によって変換されたページ (->オリジナル) /