Browse Source

Use smarter publish script (#154)

v6-dev
Eli Perelman 8 years ago
committed by GitHub
parent
commit
3afd73784f
  1. 19
      .scripts/STANDALONE_PACKAGES
  2. 8
      .scripts/dependent-packages.json
  3. 64
      .scripts/publish
  4. 39
      .scripts/publish-dependent
  5. 2
      package.json
  6. 4
      yarn.lock

19
.scripts/STANDALONE_PACKAGES

@ -1,19 +0,0 @@
neutrino
neutrino-middleware-banner
neutrino-middleware-chunk
neutrino-middleware-clean
neutrino-middleware-compile-loader
neutrino-middleware-copy
neutrino-middleware-env
neutrino-middleware-eslint
neutrino-middleware-font-loader
neutrino-middleware-hot
neutrino-middleware-html-loader
neutrino-middleware-html-template
neutrino-middleware-image-loader
neutrino-middleware-loader-merge
neutrino-middleware-minify
neutrino-middleware-named-modules
neutrino-middleware-start-server
neutrino-middleware-style-loader
neutrino-preset-karma

8
.scripts/dependent-packages.json

@ -1,8 +0,0 @@
[
"neutrino-preset-airbnb-base",
"neutrino-preset-jest",
"neutrino-preset-mocha",
"neutrino-preset-node",
"neutrino-preset-web",
"neutrino-preset-react"
]

64
.scripts/publish

@ -1,17 +1,57 @@
#! /bin/bash
#! /usr/bin/env node
VERSION="$1"
const { join } = require('path');
const Graph = require("graph-data-structure");
const semver = require('semver');
const { readdirSync } = require('fs');
const { execSync } = require('child_process');
if [[ -z "$VERSION" ]]; then
echo "Missing required version parameter"
exit 1
fi
const version = process.argv[2];
yarn reset-versions "$VERSION"
if (!semver.valid(version)) {
console.error('Missing required valid version parameter');
process.exit(1);
}
while read d; do
echo -e "Publishing $d@$VERSION"
npm publish "packages/$d"
done <$(dirname $0)/STANDALONE_PACKAGES
execSync(`yarn reset-versions ${version}`);
$(dirname $0)/publish-dependent "$VERSION"
const packagesDir = join(__dirname, '../packages');
const packages = readdirSync(packagesDir);
const graph = packages.reduce((graph, pkg) => {
graph.addNode(pkg);
graph.addEdge('neutrino', pkg);
Object
.keys(require(join(packagesDir, `${pkg}/package.json`)).dependencies)
.filter(dep => dep.includes('neutrino'))
.forEach(dep => graph.addEdge(dep, pkg));
return graph;
}, new Graph());
graph
.topologicalSort()
.forEach(p => {
console.log(`Publishing ${p}@${version}`);
const cwd = join(packagesDir, p);
const pkgJson = join(cwd, 'package.json');
const pkg = require(pkgJson);
const upgradedDeps = [];
Object
.keys(pkg.dependencies)
.forEach(dep => {
if (!dep.includes('neutrino-')) {
return;
}
upgradedDeps.push(dep);
});
if (upgradedDeps.length) {
execSync(`yarn upgrade ${upgradedDeps.join(' ')}`, { cwd });
}
execSync(`npm publish`, { cwd });
});

39
.scripts/publish-dependent

@ -1,39 +0,0 @@
#! /usr/bin/env node
const packages = require('./dependent-packages.json');
const { join } = require('path');
const { writeFileSync } = require('fs');
const { execSync } = require('child_process');
const version = process.argv[2];
if (!version) {
console.error('Missing required version parameter');
process.exit(1);
}
packages.forEach(p => {
console.log(`Publishing ${p}@${version}`);
const cwd = join(__dirname, `../packages/${p}`);
const pkgJson = join(cwd, 'package.json');
const pkg = require(pkgJson);
const upgradedDeps = [];
Object
.keys(pkg.dependencies)
.forEach(dep => {
if (!dep.includes('neutrino-')) {
return;
}
pkg.dependencies[dep] = `^${version}`;
upgradedDeps.push(dep);
});
writeFileSync(pkgJson, `${JSON.stringify(pkg, null, 2)}\n`, { encoding: 'utf8' });
execSync(`yarn upgrade ${upgradedDeps.join(' ')}`, { cwd });
execSync(`npm publish`, { cwd });
// console.log(` yarn upgrade ${upgradedDeps.join(' ')}`);
});

2
package.json

@ -39,8 +39,10 @@
"gitbook-plugin-github": "^2.0.0",
"gitbook-plugin-npmsearchlist": "^1.0.0",
"gitbook-plugin-prism": "^2.2.0",
"graph-data-structure": "^0.8.0",
"oao": "^0.8.0",
"prettier": "^0.22.0",
"semver": "^5.3.0",
"webpack": "^2.3.1"
}
}

4
yarn.lock

@ -2283,6 +2283,10 @@ graceful-fs@4.1.10, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.1.9,
version "1.0.1"
resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725"
graph-data-structure@^0.8.0:
version "0.8.0"
resolved "https://registry.yarnpkg.com/graph-data-structure/-/graph-data-structure-0.8.0.tgz#52ca8be48359ad688ae420a3252937c4e27204ce"
har-validator@~2.0.6:
version "2.0.6"
resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-2.0.6.tgz#cdcbc08188265ad119b6a5a7c8ab70eecfb5d27d"

Loading…
Cancel
Save