Reorganize monorepo structure

* Move all config files to './configs'
* Simplify './scripts' folder.
This commit is contained in:
Nicolas Gallagher
2022-06-30 23:17:16 -07:00
parent d31a8a1ec1
commit f81095442f
140 changed files with 110 additions and 98 deletions
+1 -1
View File
@@ -1,6 +1,6 @@
{ {
"packages": ["packages/react-native-web", "packages/babel-plugin-react-native-web"], "packages": ["packages/react-native-web", "packages/babel-plugin-react-native-web"],
"buildCommand": "compile", "buildCommand": "compile",
"sandboxes": ["/packages/examples/"], "sandboxes": ["/packages/react-native-web-examples/"],
"node": "16" "node": "16"
} }
-6
View File
@@ -1,6 +0,0 @@
coverage
dist
flow-typed
node_modules
packages/**/vendor/*
packages/examples/.next
-1
View File
@@ -1 +0,0 @@
{}
+1 -1
View File
@@ -10,7 +10,7 @@ The [documentation site](https://necolas.github.io/react-native-web/) covers ins
## Example ## Example
And here is a simple example to get you started. The [example app](https://pk4zn6v4o0.sse.codesandbox.io/) (fork the [codesandbox](https://codesandbox.io/s/github/necolas/react-native-web/tree/master/packages/examples)) includes interactive examples and the [source code](https://github.com/necolas/react-native-web/blob/master/packages/examples) is also available. And here is a simple example to get you started. The [example app](https://pk4zn6v4o0.sse.codesandbox.io/) (fork the [codesandbox](https://codesandbox.io/s/github/necolas/react-native-web/tree/master/packages/react-native-web-examples)) includes interactive examples and the [source code](https://github.com/necolas/react-native-web/blob/master/packages/react-native-web-examples) is also available.
```js ```js
import React from 'react'; import React from 'react';
-7
View File
@@ -1,7 +0,0 @@
module.exports = function (api) {
api.cache(true);
return {
presets: ['./scripts/babel/preset']
};
};
+1 -1
View File
@@ -3,4 +3,4 @@ dist
flow-typed flow-typed
node_modules node_modules
packages/**/vendor/* packages/**/vendor/*
packages/examples/.next packages/**/.next
+9 -1
View File
@@ -2,7 +2,7 @@
"settings": { "settings": {
"react": { "react": {
"pragma": "React", "pragma": "React",
"version": "16.6", "version": "17.0",
"flowVersion": "0.148.0" // Flow version "flowVersion": "0.148.0" // Flow version
} }
}, },
@@ -33,6 +33,14 @@
"jest": true, "jest": true,
"node": true "node": true
}, },
"ignorePatterns": [
"coverage",
"dist",
"flow-typed",
"node_modules",
"packages/**/vendor/*",
"packages/**/.next"
],
"globals": { "globals": {
}, },
+2 -4
View File
@@ -4,11 +4,9 @@
[ignore] [ignore]
<PROJECT_ROOT>/.*/__tests__/.* <PROJECT_ROOT>/.*/__tests__/.*
<PROJECT_ROOT>/packages/.*/dist/.* <PROJECT_ROOT>/packages/.*/dist/.*
<PROJECT_ROOT>/packages/docs/.* <PROJECT_ROOT>/packages/react-native-web-docs/.*
<PROJECT_ROOT>/packages/examples/.* <PROJECT_ROOT>/packages/react-native-web-examples/.*
.*/node_modules/.*/.*.json .*/node_modules/.*/.*.json
.*/node_modules/@emotion/css/*
.*/node_modules/babel-plugin-transform-react-remove-prop-types/*
[include] [include]
+6
View File
@@ -0,0 +1,6 @@
../coverage
../**/dist
../flow-typed
../node_modules
../packages/**/vendor/*
../packages/**/.next
+49
View File
@@ -0,0 +1,49 @@
module.exports = function (api) {
if (api) {
api.cache(true);
}
let modules = false;
if (process.env.BABEL_ENV === 'commonjs' || process.env.NODE_ENV === 'test') {
modules = 'commonjs';
}
return {
presets: [
[
'@babel/preset-env',
{
loose: true,
modules,
exclude: ['transform-typeof-symbol'],
targets: {
browsers: [
'chrome 38',
'android 4',
'firefox 40',
'ios_saf 7',
'safari 7',
'ie 10',
'ie_mob 11',
'edge 12',
'opera 16',
'op_mini 12',
'and_uc 9',
'and_chr 38'
]
}
}
],
'@babel/preset-react',
'@babel/preset-flow'
],
plugins: [
'@babel/plugin-transform-flow-strip-types',
['babel-plugin-transform-react-remove-prop-types', { mode: 'wrap' }],
['@babel/plugin-proposal-class-properties', { loose: true }],
['@babel/plugin-proposal-object-rest-spread', { useBuiltIns: true }],
'@babel/plugin-proposal-nullish-coalescing-operator'
].concat(modules ? ['babel-plugin-add-module-exports'] : [])
};
};
@@ -1,22 +1,25 @@
'use strict'; 'use strict';
const babelConfig = require('./babel.config.js');
module.exports = { module.exports = {
coveragePathIgnorePatterns: ['/node_modules/', '<rootDir>/packages/react-native-web/src/vendor/'], coveragePathIgnorePatterns: ['/node_modules/', '<rootDir>/packages/react-native-web/src/vendor/'],
modulePathIgnorePatterns: [ modulePathIgnorePatterns: [
'<rootDir>/packages/benchmarks/', '<rootDir>/packages/benchmarks/',
'<rootDir>/packages/docs/', '<rootDir>/packages/react-native-web-docs/',
'<rootDir>/packages/examples/', '<rootDir>/packages/react-native-web-examples/',
'<rootDir>/packages/react-native-web/dist/' '<rootDir>/packages/react-native-web/dist/'
], ],
rootDir: process.cwd(), rootDir: process.cwd(),
roots: ['<rootDir>/packages'], roots: ['<rootDir>/packages'],
setupFiles: [require.resolve('./setupFiles.dom.js')], setupFiles: [require.resolve('./jest-setupFiles.dom.js')],
snapshotFormat: { snapshotFormat: {
printBasicPrototype: false printBasicPrototype: false
}, },
testEnvironment: 'jsdom', testEnvironment: 'jsdom',
testMatch: ['**/__tests__/**/?(*-)+(spec|test).[jt]s?(x)'], testMatch: ['**/__tests__/**/?(*-)+(spec|test).[jt]s?(x)'],
timers: 'fake' timers: 'fake',
transform: {
'\\.[jt]sx?$': ['babel-jest', babelConfig()]
}
}; };
('**/?(*.)+(spec|test).[jt]s?(x)');
@@ -1,11 +1,13 @@
'use strict'; 'use strict';
const babelConfig = require('./babel.config.js');
module.exports = { module.exports = {
coveragePathIgnorePatterns: ['/node_modules/', '<rootDir>/packages/react-native-web/src/vendor/'], coveragePathIgnorePatterns: ['/node_modules/', '<rootDir>/packages/react-native-web/src/vendor/'],
modulePathIgnorePatterns: [ modulePathIgnorePatterns: [
'<rootDir>/packages/benchmarks/', '<rootDir>/packages/benchmarks/',
'<rootDir>/packages/docs/', '<rootDir>/packages/react-native-web-docs/',
'<rootDir>/packages/examples/', '<rootDir>/packages/react-native-web-examples/',
'<rootDir>/packages/react-native-web/dist/' '<rootDir>/packages/react-native-web/dist/'
], ],
rootDir: process.cwd(), rootDir: process.cwd(),
@@ -15,5 +17,8 @@ module.exports = {
}, },
testEnvironment: 'node', testEnvironment: 'node',
testMatch: ['**/__tests__/**/?(*-)+(spec|test).node.[jt]s?(x)'], testMatch: ['**/__tests__/**/?(*-)+(spec|test).node.[jt]s?(x)'],
timers: 'fake' timers: 'fake',
transform: {
'\\.[jt]sx?$': ['babel-jest', babelConfig()]
}
}; };
+17 -17
View File
@@ -5,27 +5,27 @@
"scripts": { "scripts": {
"clean": "del-cli ./packages/*/dist", "clean": "del-cli ./packages/*/dist",
"compile": "npm-run-all clean -p \"compile:* {@}\" --", "compile": "npm-run-all clean -p \"compile:* {@}\" --",
"compile:commonjs": "cd packages/react-native-web && cross-env BABEL_ENV=commonjs babel --root-mode upward src --out-dir dist/cjs --ignore \"**/__tests__\"", "compile:commonjs": "cd packages/react-native-web && cross-env BABEL_ENV=commonjs babel --config-file ../../configs/babel.config.js src --out-dir dist/cjs --ignore \"**/__tests__\"",
"compile:es": "cd packages/react-native-web && babel --root-mode upward src --out-dir dist --ignore \"**/__tests__\"", "compile:es": "cd packages/react-native-web && babel --config-file ../../configs/babel.config.js src --out-dir dist --ignore \"**/__tests__\"",
"compile:flow": "gen-flow-files packages/react-native-web/src --out-dir packages/react-native-web/dist", "compile:flow": "gen-flow-files packages/react-native-web/src --out-dir packages/react-native-web/dist",
"benchmarks": "cd packages/benchmarks && yarn dev", "benchmarks": "cd packages/benchmarks && yarn dev",
"benchmarks:build": "cd packages/benchmarks && yarn build", "benchmarks:build": "cd packages/benchmarks && yarn build",
"benchmarks:release": "yarn benchmarks:build && git checkout gh-pages && rm -rf ./docs/benchmarks && mv packages/benchmarks/dist ./docs/benchmarks && git add -A && git commit -m \"Deploy benchmarks\" && git push origin gh-pages && git checkout -", "benchmarks:release": "yarn benchmarks:build && git checkout gh-pages && rm -rf ./docs/benchmarks && mv packages/benchmarks/dist ./docs/benchmarks && git add -A && git commit -m \"Deploy benchmarks\" && git push origin gh-pages && git checkout -",
"docs": "cd packages/docs && yarn dev", "docs": "cd packages/react-native-web-docs && yarn dev",
"docs:build": "cd packages/docs && yarn build", "docs:build": "cd packages/react-native-web-docs && yarn build",
"docs:release": "yarn docs:build && git checkout gh-pages && rm -rf ./docs && mv packages/docs/dist ./docs && git add ./docs && git commit -m \"Deploy documentation\" && git push origin gh-pages && git checkout -", "docs:release": "yarn docs:build && git checkout gh-pages && rm -rf ./docs && mv packages/react-native-web-docs/dist ./docs && git add ./docs && git commit -m \"Deploy documentation\" && git push origin gh-pages && git checkout -",
"examples": "cd packages/examples && yarn dev", "examples": "cd packages/react-native-web-examples && yarn dev",
"examples:build": "cd packages/examples && yarn build", "examples:build": "cd packages/react-native-web-examples && yarn build",
"flow": "flow", "flow": "flow --flowconfig-name ./configs/.flowconfig",
"fmt": "prettier --write \"**/*.js\"", "fmt": "prettier --write \"**/*.js\" --ignore-path ./configs/.prettierignore",
"fmt:report": "prettier --check \"**/*.js\"", "fmt:report": "prettier --check --ignore-path ./configs/.prettierignore \"**/*.js\"",
"jest": "npm-run-all \"jest:* {@}\" --", "jest": "npm-run-all \"jest:* {@}\" --",
"jest:dom": "jest --config ./scripts/jest/config.js", "jest:dom": "jest --config ./configs/jest.config.js",
"jest:node": "jest --config ./scripts/jest/config.node.js", "jest:node": "jest --config ./configs/jest.config.node.js",
"lint": "yarn lint:report --fix", "lint": "yarn lint:report --fix",
"lint:report": "eslint packages scripts", "lint:report": "eslint configs packages scripts --config ./configs/.eslintrc",
"prerelease": "yarn test && yarn compile", "prerelease": "yarn test && yarn compile",
"release": "node ./scripts/release/publish.js", "release": "node ./scripts/releasePackages.js",
"postrelease": "yarn docs:release && yarn benchmarks:release", "postrelease": "yarn docs:release && yarn benchmarks:release",
"test": "yarn flow && yarn fmt:report && yarn lint:report && yarn jest --runInBand" "test": "yarn flow && yarn fmt:report && yarn lint:report && yarn jest --runInBand"
}, },
@@ -78,14 +78,14 @@
}, },
"lint-staged": { "lint-staged": {
"packages/react-native-web/src/index.js": [ "packages/react-native-web/src/index.js": [
"node ./scripts/babel/createModuleMap.js", "node ./scripts/createBabelReactNativeWebModuleMap.js",
"prettier --write ./packages/babel-plugin-react-native-web/src/moduleMap.js", "prettier --write ./packages/babel-plugin-react-native-web/src/moduleMap.js",
"git add ./packages/babel-plugin-react-native-web/src/moduleMap.js" "git add ./packages/babel-plugin-react-native-web/src/moduleMap.js"
], ],
"**/*.js": [ "**/*.js": [
"prettier --write", "prettier --write --ignore-path ./configs/.prettierignore",
"git update-index --again", "git update-index --again",
"eslint" "yarn lint"
] ]
}, },
"prettier": { "prettier": {
+1 -2
View File
@@ -1,4 +1,3 @@
const babelPreset = require('../../scripts/babel/preset');
const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin; const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin;
const path = require('path'); const path = require('path');
@@ -38,7 +37,7 @@ module.exports = {
loader: 'babel-loader', loader: 'babel-loader',
options: { options: {
cacheDirectory: false, cacheDirectory: false,
presets: [babelPreset] extends: path.resolve(appDirectory, '../../configs/babel.config')
} }
} }
} }
@@ -1,6 +1,6 @@
{ {
"private": true, "private": true,
"name": "docs", "name": "react-native-web-docs",
"version": "0.18.3", "version": "0.18.3",
"description": "Documentation website for React Native for Web", "description": "Documentation website for React Native for Web",
"scripts": { "scripts": {

Before

Width:  |  Height:  |  Size: 4.8 KiB

After

Width:  |  Height:  |  Size: 4.8 KiB

Before

Width:  |  Height:  |  Size: 218 B

After

Width:  |  Height:  |  Size: 218 B

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 1.2 KiB

Before

Width:  |  Height:  |  Size: 811 B

After

Width:  |  Height:  |  Size: 811 B

Before

Width:  |  Height:  |  Size: 2.8 KiB

After

Width:  |  Height:  |  Size: 2.8 KiB

Before

Width:  |  Height:  |  Size: 3.0 KiB

After

Width:  |  Height:  |  Size: 3.0 KiB

@@ -1,6 +1,6 @@
{ {
"private": true, "private": true,
"name": "examples", "name": "react-native-web-examples",
"version": "0.18.3", "version": "0.18.3",
"scripts": { "scripts": {
"dev": "next", "dev": "next",
@@ -8,6 +8,7 @@
"start": "next start" "start": "next start"
}, },
"dependencies": { "dependencies": {
"babel-plugin-react-native-web": "0.18.2",
"next": "^12.1.0", "next": "^12.1.0",
"react": "^17.0.2", "react": "^17.0.2",
"react-dom": "^17.0.2", "react-dom": "^17.0.2",

Some files were not shown because too many files have changed in this diff Show More