Reorganize monorepo structure
* Move all config files to './configs' * Simplify './scripts' folder.
@@ -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"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +0,0 @@
|
|||||||
coverage
|
|
||||||
dist
|
|
||||||
flow-typed
|
|
||||||
node_modules
|
|
||||||
packages/**/vendor/*
|
|
||||||
packages/examples/.next
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
{}
|
|
||||||
@@ -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';
|
||||||
|
|||||||
@@ -1,7 +0,0 @@
|
|||||||
module.exports = function (api) {
|
|
||||||
api.cache(true);
|
|
||||||
|
|
||||||
return {
|
|
||||||
presets: ['./scripts/babel/preset']
|
|
||||||
};
|
|
||||||
};
|
|
||||||
@@ -3,4 +3,4 @@ dist
|
|||||||
flow-typed
|
flow-typed
|
||||||
node_modules
|
node_modules
|
||||||
packages/**/vendor/*
|
packages/**/vendor/*
|
||||||
packages/examples/.next
|
packages/**/.next
|
||||||
@@ -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": {
|
||||||
|
|
||||||
},
|
},
|
||||||
@@ -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]
|
||||||
|
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
../coverage
|
||||||
|
../**/dist
|
||||||
|
../flow-typed
|
||||||
|
../node_modules
|
||||||
|
../packages/**/vendor/*
|
||||||
|
../packages/**/.next
|
||||||
@@ -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()]
|
||||||
|
}
|
||||||
};
|
};
|
||||||
@@ -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,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",
|
||||||