Skip to content

Commit

Permalink
Monorepo (#5341)
Browse files Browse the repository at this point in the history
- Implements Lerna
- Moves all source code into `packages/next`
- Keeps integration tests in the root directory
  • Loading branch information
timneutkens committed Sep 30, 2018
1 parent 08c71a4 commit b1c4f3a
Show file tree
Hide file tree
Showing 123 changed files with 239 additions and 194 deletions.
1 change: 1 addition & 0 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,4 +7,5 @@ jobs:
steps:
- checkout
- run: yarn install
- run: yarn bootstrap
- run: yarn test
1 change: 1 addition & 0 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
before_cache: [
"rm -rf node_modules/.cache"
],
before_script: ["npm run bootstrap"],
after_script: ["npm run coveralls"],
deploy: {
provider: "npm",
Expand Down
1 change: 1 addition & 0 deletions appveyor.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ install:
- ps: Install-Product node $env:nodejs_version x64
# install modules
- npm install
- npm run bootstrap

# Post-install test scripts.
test_script:
Expand Down
14 changes: 14 additions & 0 deletions lerna.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
{
"npmClient": "yarn",
"useWorkspaces": true,
"packages": [
"packages/*"
],
"command": {
"publish": {
"allowBranch": "canary",
"registry": "https://registry.npmjs.org/"
}
},
"version": "0.0.0"
}
126 changes: 21 additions & 105 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,50 +1,26 @@
{
"name": "next",
"version": "7.0.1",
"description": "Minimalistic framework for server-rendered React applications",
"main": "./dist/server/next.js",
"license": "MIT",
"repository": "zeit/next.js",
"bugs": "https://github.com/zeit/next.js/issues",
"homepage": "https://github.com/zeit/next.js",
"files": [
"dist",
"app.js",
"asset.js",
"babel.js",
"client.js",
"config.js",
"constants.js",
"document.js",
"dynamic.js",
"error.js",
"head.js",
"link.js",
"prefetch.js",
"router.js"
"name": "nextjs-project",
"private": true,
"workspaces": [
"packages/*"
],
"bin": {
"next": "./dist/bin/next"
},
"scripts": {
"build": "taskr",
"release": "taskr release",
"lerna": "lerna",
"bootstrap": "lerna bootstrap",
"pretestonly": "taskr pretest",
"testonly": "cross-env NODE_PATH=test/lib jest \\.test.js",
"posttestonly": "taskr posttest",
"testall": "npm run testonly -- --coverage --forceExit --runInBand --verbose --bail",
"pretest": "npm run lint && npm run flow",
"pretest": "npm run lint",
"test": "cross-env npm run testall || npm run testall",
"coveralls": "nyc --instrument=false --source-map=false report --temp-directory=./coverage --reporter=text-lcov | coveralls",
"flow": "flow check",
"lint": "standard 'bin/*' 'client/**/*.js' 'examples/**/*.js' 'lib/**/*.js' 'pages/**/*.js' 'server/**/*.js' 'build/**/*.js' 'test/**/*.js'",
"prepublish": "npm run release",
"precommit": "lint-staged"
"precommit": "lint-staged",
"lint": "lerna run lint",
"prepublish": "lerna run prepublish"
},
"taskr": {
"requires": [
"./taskfile-babel.js"
]
"lint-staged": {
"*.js": "standard",
"bin/*": "standard"
},
"standard": {
"parser": "babel-eslint",
Expand All @@ -55,73 +31,22 @@
"**/examples/with-mobx/**"
]
},
"lint-staged": {
"*.js": "standard",
"bin/*": "standard"
"jest": {
"testEnvironment": "node",
"roots": [
"test/"
]
},
"dependencies": {
"@babel/core": "7.0.0",
"@babel/plugin-proposal-class-properties": "7.0.0",
"devDependencies": {
"@babel/plugin-proposal-object-rest-spread": "7.0.0",
"@babel/plugin-syntax-dynamic-import": "7.0.0",
"@babel/plugin-transform-runtime": "7.0.0",
"@babel/preset-env": "7.0.0",
"@babel/preset-react": "7.0.0",
"@babel/runtime": "7.0.0",
"@babel/runtime-corejs2": "7.0.0",
"@babel/template": "7.0.0",
"ansi-html": "0.0.7",
"autodll-webpack-plugin": "0.4.2",
"babel-core": "7.0.0-bridge.0",
"babel-loader": "8.0.2",
"babel-plugin-react-require": "3.0.0",
"babel-plugin-transform-react-remove-prop-types": "0.4.15",
"case-sensitive-paths-webpack-plugin": "2.1.2",
"cross-spawn": "5.1.0",
"del": "3.0.0",
"etag": "1.8.1",
"event-source-polyfill": "0.0.12",
"find-up": "2.1.0",
"fresh": "0.5.2",
"friendly-errors-webpack-plugin": "1.7.0",
"glob": "7.1.2",
"hoist-non-react-statics": "2.5.5",
"htmlescape": "1.1.1",
"http-errors": "1.6.2",
"http-status": "1.0.1",
"launch-editor": "2.2.1",
"loader-utils": "1.1.0",
"minimist": "1.2.0",
"mkdirp-then": "1.2.0",
"nanoid": "1.2.1",
"path-to-regexp": "2.1.0",
"prop-types": "15.6.2",
"prop-types-exact": "1.2.0",
"react-error-overlay": "4.0.0",
"recursive-copy": "2.0.6",
"resolve": "1.5.0",
"send": "0.16.1",
"source-map": "0.5.7",
"strip-ansi": "3.0.1",
"styled-jsx": "3.1.0",
"terser-webpack-plugin": "1.0.2",
"unfetch": "3.0.0",
"url": "0.11.0",
"webpack": "4.20.2",
"webpack-dev-middleware": "3.4.0",
"webpack-hot-middleware": "2.22.3",
"webpack-sources": "1.2.0",
"webpackbar": "2.6.3",
"write-file-webpack-plugin": "4.3.2"
},
"devDependencies": {
"@babel/preset-flow": "7.0.0",
"@taskr/clear": "1.1.0",
"@taskr/esnext": "1.1.0",
"@taskr/watch": "1.1.0",
"@zeit/next-css": "0.2.1-canary.1",
"@zeit/next-sass": "0.2.1-canary.1",
"@zeit/next-typescript": "1.1.0",
"babel-core": "7.0.0-bridge.0",
"babel-eslint": "9.0.0",
"babel-jest": "23.4.2",
"babel-plugin-transform-define": "1.3.0",
Expand All @@ -138,6 +63,7 @@
"get-port": "3.2.0",
"husky": "0.14.3",
"jest-cli": "21.2.0",
"lerna": "^3.4.0",
"lint-staged": "4.2.3",
"micro": "9.1.0",
"mkdirp": "0.5.1",
Expand All @@ -151,15 +77,5 @@
"standard": "11.0.1",
"taskr": "1.1.0",
"wd": "1.10.3"
},
"peerDependencies": {
"react": "^16.0.0",
"react-dom": "^16.0.0"
},
"jest": {
"testEnvironment": "node",
"roots": [
"test/"
]
}
}
1 change: 0 additions & 1 deletion .flowconfig → packages/next/.flowconfig
Original file line number Diff line number Diff line change
@@ -1,3 +1,2 @@
[ignore]
<PROJECT_ROOT>/examples/.*
<PROJECT_ROOT>/.*.json
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
114 changes: 114 additions & 0 deletions packages/next/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,114 @@
{
"name": "next",
"version": "7.0.1",
"description": "Minimalistic framework for server-rendered React applications",
"main": "./dist/server/next.js",
"license": "MIT",
"repository": "zeit/next.js",
"bugs": "https://github.com/zeit/next.js/issues",
"homepage": "https://github.com/zeit/next.js",
"files": [
"dist",
"app.js",
"asset.js",
"babel.js",
"client.js",
"config.js",
"constants.js",
"document.js",
"dynamic.js",
"error.js",
"head.js",
"link.js",
"prefetch.js",
"router.js"
],
"bin": {
"next": "./dist/bin/next"
},
"scripts": {
"build": "taskr",
"release": "taskr release",
"flow": "flow check",
"lint": "standard 'bin/*' 'client/**/*.js' 'examples/**/*.js' 'lib/**/*.js' 'pages/**/*.js' 'server/**/*.js' 'build/**/*.js' 'test/**/*.js'",
"prepublish": "npm run release"
},
"taskr": {
"requires": [
"./taskfile-babel.js"
]
},
"standard": {
"parser": "babel-eslint",
"ignore": [
"**/node_modules/**",
"**/examples/with-ioc/**",
"**/examples/with-kea/**",
"**/examples/with-mobx/**"
]
},
"dependencies": {
"@babel/core": "7.1.2",
"@babel/plugin-proposal-class-properties": "7.1.0",
"@babel/plugin-proposal-object-rest-spread": "7.0.0",
"@babel/plugin-syntax-dynamic-import": "7.0.0",
"@babel/plugin-transform-runtime": "7.1.0",
"@babel/preset-env": "7.1.0",
"@babel/preset-react": "7.0.0",
"@babel/runtime": "7.1.2",
"@babel/runtime-corejs2": "7.1.2",
"@babel/template": "7.1.2",
"ansi-html": "0.0.7",
"autodll-webpack-plugin": "0.4.2",
"babel-core": "7.0.0-bridge.0",
"babel-loader": "8.0.2",
"babel-plugin-react-require": "3.0.0",
"babel-plugin-transform-react-remove-prop-types": "0.4.15",
"case-sensitive-paths-webpack-plugin": "2.1.2",
"cross-spawn": "5.1.0",
"del": "3.0.0",
"etag": "1.8.1",
"event-source-polyfill": "0.0.12",
"find-up": "2.1.0",
"fresh": "0.5.2",
"friendly-errors-webpack-plugin": "1.7.0",
"glob": "7.1.2",
"hoist-non-react-statics": "2.5.5",
"htmlescape": "1.1.1",
"http-errors": "1.6.2",
"http-status": "1.0.1",
"launch-editor": "2.2.1",
"loader-utils": "1.1.0",
"minimist": "1.2.0",
"mkdirp-then": "1.2.0",
"nanoid": "1.2.1",
"path-to-regexp": "2.1.0",
"prop-types": "15.6.2",
"prop-types-exact": "1.2.0",
"react-error-overlay": "4.0.0",
"recursive-copy": "2.0.6",
"resolve": "1.5.0",
"send": "0.16.1",
"source-map": "0.5.7",
"strip-ansi": "3.0.1",
"styled-jsx": "3.1.0",
"terser-webpack-plugin": "1.0.2",
"unfetch": "3.0.0",
"url": "0.11.0",
"webpack": "4.20.2",
"webpack-dev-middleware": "3.4.0",
"webpack-hot-middleware": "2.22.3",
"webpack-sources": "1.2.0",
"webpackbar": "2.6.3",
"write-file-webpack-plugin": "4.3.2"
},
"peerDependencies": {
"react": "^16.0.0",
"react-dom": "^16.0.0"
},
"devDependencies": {
"@babel/preset-flow": "7.0.0",
"@taskr/clear": "1.1.0",
"@taskr/watch": "1.1.0"
}
}
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
68 changes: 68 additions & 0 deletions packages/next/taskfile.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
const notifier = require('node-notifier')

export async function compile (task) {
await task.parallel(['bin', 'server', 'nextbuild', 'nextbuildstatic', 'lib', 'client'])
}

export async function bin (task, opts) {
await task.source(opts.src || 'bin/*').babel().target('dist/bin', {mode: '0755'})
notify('Compiled binaries')
}

export async function lib (task, opts) {
await task.source(opts.src || 'lib/**/*.js').babel().target('dist/lib')
notify('Compiled lib files')
}

export async function server (task, opts) {
await task.source(opts.src || 'server/**/*.js').babel().target('dist/server')
notify('Compiled server files')
}

export async function nextbuild (task, opts) {
await task.source(opts.src || 'build/**/*.js').babel().target('dist/build')
notify('Compiled build files')
}

export async function client (task, opts) {
await task.source(opts.src || 'client/**/*.js').babel().target('dist/client')
notify('Compiled client files')
}

// export is a reserved keyword for functions
export async function nextbuildstatic (task, opts) {
await task.source(opts.src || 'export/**/*.js').babel().target('dist/export')
notify('Compiled export files')
}

export async function copy (task) {
await task.source('pages/**/*.js').target('dist/pages')
}

export async function build (task) {
await task.serial(['copy', 'compile'])
}

export default async function (task) {
await task.start('build')
await task.watch('bin/*', 'bin')
await task.watch('pages/**/*.js', 'copy')
await task.watch('server/**/*.js', 'server')
await task.watch('build/**/*.js', 'nextbuild')
await task.watch('export/**/*.js', 'nextexport')
await task.watch('client/**/*.js', 'client')
await task.watch('lib/**/*.js', 'lib')
}

export async function release (task) {
await task.clear('dist').start('build')
}

// notification helper
function notify (msg) {
return notifier.notify({
title: '▲ Next',
message: msg,
icon: false
})
}
1 change: 1 addition & 0 deletions readme.md
Loading

0 comments on commit b1c4f3a

Please sign in to comment.