Skip to content

Commit

Permalink
chore: use yarn 2
Browse files Browse the repository at this point in the history
  • Loading branch information
JLHwung committed Aug 14, 2020
1 parent 028a051 commit d048ebd
Show file tree
Hide file tree
Showing 167 changed files with 28,789 additions and 11,913 deletions.
27 changes: 6 additions & 21 deletions .circleci/config.yml
@@ -1,25 +1,13 @@
version: 2.1

aliases:
- &restore-node-modules-cache
keys:
- v1-yarn-deps-{{ checksum "yarn.lock" }}
- v1-yarn-deps-

- &restore-yarn-cache
keys:
- v1-1-yarn-cache-{{ checksum "yarn.lock" }}
- v1-1-yarn-cache-

- &save-node-modules-cache
paths:
- node_modules
key: v1-yarn-deps-{{ checksum "yarn.lock" }}
key: v2-yarn-cache-{{ checksum "yarn.lock" }}

- &save-yarn-cache
paths:
- ~/.cache/yarn
key: v1-1-yarn-cache-{{ checksum "yarn.lock" }}
- .yarn/cache
key: v2-yarn-cache-{{ checksum "yarn.lock" }}

- &artifact_babel
path: ~/babel/packages/babel-standalone/babel.js
Expand Down Expand Up @@ -56,7 +44,6 @@ jobs:
steps:
- checkout
- restore_cache: *restore-yarn-cache
- restore_cache: *restore-node-modules-cache
# Builds babel-standalone with the regular Babel config
# test-ci-coverage doesn't test babel-standalone, as trying to gather coverage
- run: IS_PUBLISH=true make -j build-standalone-ci
Expand All @@ -65,7 +52,6 @@ jobs:
- run: yarn jest "\-standalone/test"
- store_artifacts: *artifact_babel
- store_artifacts: *artifact_babel_min
- save_cache: *save-node-modules-cache
- save_cache: *save-yarn-cache

test262:
Expand All @@ -81,14 +67,13 @@ jobs:
git checkout -qf FETCH_HEAD
fi
- restore_cache: *restore-yarn-cache
- restore_cache: *restore-node-modules-cache
- run:
name: Build Babel
command: BABEL_ENV=test make bootstrap
- run:
name: Setup Test Runner
command: |
git clone --depth=1 --recurse-submodules https://github.com/babel/babel-test262-runner
git clone --recurse-submodules https://github.com/babel/babel-test262-runner
cd babel-test262-runner
npm ci
npm i tap-mocha-reporter --save-dev
Expand Down Expand Up @@ -121,20 +106,20 @@ jobs:
cat ~/diff.tap | $(npm bin)/tap-merge | $(npm bin)/tap-mocha-reporter xunit | tee ~/test-results/test262/results.xml
<<: *test262_workdir
- store_test_results: *artifact_test262_xunit
- save_cache: *save-yarn-cache

publish-verdaccio:
executor: node-executor
steps:
- checkout
- restore_cache: *restore-yarn-cache
- restore_cache: *restore-node-modules-cache
- run: yarn install
- run: ./scripts/integration-tests/publish-local.sh
- persist_to_workspace:
root: /tmp/verdaccio-workspace
paths:
- storage
- htpasswd
- save_cache: *save-yarn-cache

e2e-babel:
executor: node-executor
Expand Down
3 changes: 1 addition & 2 deletions .codesandbox/ci.json
@@ -1,6 +1,5 @@
{
"installCommand": "codesandbox",
"buildCommand": false,
"buildCommand": "codesandbox:build",
"sandboxes": ["7s08o", "vhm64"],
"packages": ["packages/*"]
}
10 changes: 6 additions & 4 deletions .travis.yml
@@ -1,14 +1,16 @@
git:
depth: 5
language: node_js

cache:
yarn: true
npm: false
directories:
- .yarn/cache

os: linux

env:
global:
- PATH=$HOME/.yarn/bin:$PATH
- JOB=test

install: skip
Expand Down Expand Up @@ -37,13 +39,13 @@ matrix:
# https://travis-ci.community/t/build-doesnt-finish-after-completing-tests/288/9
- YARN_GPG=no
cache:
yarn: true
npm: false
directories:
- $HOME/AppData/Local/Temp/chocolatey
- .yarn/cache
# Continue node_js matrix
- node_js: "12"
- node_js: "10"
# Node.js 6 and 8 are tested on GitHub actions
- node_js: "node"
env: JOB=babel-parser-flow-tests
- node_js: "node"
Expand Down
31 changes: 31 additions & 0 deletions .yarn-patches/@lerna/npm-publish.patch
@@ -0,0 +1,31 @@
diff --git a/npm-publish.js b/npm-publish.js
index ee6ad133e..6a31d1775 100644
--- a/npm-publish.js
+++ b/npm-publish.js
@@ -32,6 +32,15 @@ const PublishConfig = figgyPudding(
}
);

+function stripWorkspaceProtocolFromDeps(deps) {
+ if (!deps) return;
+ for (const [name, version] of Object.entries(deps)) {
+ if (version.startsWith("workspace:")) {
+ deps[name] = version.slice(10);
+ }
+ }
+}
+
function npmPublish(pkg, tarFilePath, _opts, otpCache) {
const { scope } = npa(pkg.name);
// pass only the package scope to libnpmpublish
@@ -67,6 +76,10 @@ function npmPublish(pkg, tarFilePath, _opts, otpCache) {
manifest.publishConfig.tag = opts.tag;
}

+ stripWorkspaceProtocolFromDeps(manifest.dependencies);
+ stripWorkspaceProtocolFromDeps(manifest.peerDependencies);
+ stripWorkspaceProtocolFromDeps(manifest.devDependencies);
+
return otplease(innerOpts => publish(manifest, tarData, innerOpts), opts, otpCache).catch(err => {
opts.log.silly("", err);
opts.log.error(err.code, (err.body && err.body.error) || err.message);
92 changes: 92 additions & 0 deletions .yarn-patches/@lerna/pack-directory.patch
@@ -0,0 +1,92 @@
diff --git a/lib/pack-directory.js b/lib/pack-directory.js
index d46069c78..2ba6bfea1 100644
--- a/lib/pack-directory.js
+++ b/lib/pack-directory.js
@@ -2,13 +2,13 @@

const path = require("path");
const figgyPudding = require("figgy-pudding");
-const packlist = require("npm-packlist");
const log = require("npmlog");
-const tar = require("tar");
const tempWrite = require("temp-write");
const getPacked = require("@lerna/get-packed");
const Package = require("@lerna/package");
const runLifecycle = require("@lerna/run-lifecycle");
+const util = require("util");
+const exec = util.promisify(require('child_process').exec);

module.exports = packDirectory;

@@ -40,34 +40,23 @@ function packDirectory(_pkg, dir, _opts) {
chain = chain.then(() => pkg.refresh());
}

- chain = chain.then(() => runLifecycle(pkg, "prepack", opts));
- chain = chain.then(() => pkg.refresh());
- chain = chain.then(() => packlist({ path: pkg.contents }));
- chain = chain.then(files =>
- tar.create(
- {
- cwd: pkg.contents,
- prefix: "package/",
- portable: true,
- // Provide a specific date in the 1980s for the benefit of zip,
- // which is confounded by files dated at the Unix epoch 0.
- mtime: new Date("1985-10-26T08:15:00.000Z"),
- gzip: true,
- },
- // NOTE: node-tar does some Magic Stuff depending on prefixes for files
- // specifically with @ signs, so we just neutralize that one
- // and any such future "features" by prepending `./`
- files.map(f => `./${f}`)
- )
+ // We need to call "yarn pack" to remove the "workspace:" protocol from
+ // package.json before publishing
+ chain = chain.then(() => tempWrite("", getTarballName(pkg)));
+ chain = chain.then(tarFilePath =>
+ exec("yarn pack --out " + tarFilePath, { cwd: pkg.location })
+ .then(({ stdout, stderr }) => {
+ const err = stderr.toString();
+ if (err) console.log(err);
+ })
+ .then(() => tarFilePath)
);
- chain = chain.then(stream => tempWrite(stream, getTarballName(pkg)));
chain = chain.then(tarFilePath =>
- getPacked(pkg, tarFilePath).then(packed =>
- Promise.resolve()
- .then(() => runLifecycle(pkg, "postpack", opts))
- .then(() => packed)
- )
+ Promise.resolve()
+ .then(() => pkg.refresh())
+ .then(() => tarFilePath)
);
+ chain = chain.then(tarFilePath => getPacked(pkg, tarFilePath));

return chain;
}
@@ -81,3 +70,7 @@ function getTarballName(pkg) {

return `${name}-${pkg.version}.tgz`;
}
+
+function tap(fn) {
+ return arg => Promise.resolve(fn(arg)).then(() => arg);
+}
\ No newline at end of file
diff --git a/package.json b/package.json
index e00ac73ff..953512b2c 100644
--- a/package.json
+++ b/package.json
@@ -31,9 +31,7 @@
"@lerna/package": "3.16.0",
"@lerna/run-lifecycle": "3.16.2",
"figgy-pudding": "^3.5.1",
- "npm-packlist": "^1.4.4",
"npmlog": "^4.1.2",
- "tar": "^4.4.10",
"temp-write": "^3.4.0"
},
"gitHead": "bb048cb306b5cfcb039aa98f667cf3751cf0ad20"
24 changes: 24 additions & 0 deletions .yarn-patches/@lerna/package-graph.patch
@@ -0,0 +1,24 @@
diff --git a/index.js b/index.js
index f860af4d2..27c4ce21d 100644
--- a/index.js
+++ b/index.js
@@ -57,8 +57,18 @@ class PackageGraph extends Map {
// Yarn decided to ignore https://github.com/npm/npm/pull/15900 and implemented "link:"
// As they apparently have no intention of being compatible, we have to do it for them.
// @see https://github.com/yarnpkg/yarn/issues/4212
- const spec = graphDependencies[depName].replace(/^link:/, "file:");
+ let spec = graphDependencies[depName].replace(/^link:/, "file:");
+
+ // npa doesn't support the explicit workspace: protocol, supported by
+ // pnpm and Yarn.
+ // https://github.com/lerna/lerna/pull/2450
+ const explicitWorkspace = /^workspace:/.test(spec);
+ if (explicitWorkspace) {
+ spec = spec.replace(/^workspace:/, "");
+ }
+
const resolved = npa.resolve(depName, spec, currentNode.location);
+ resolved.explicitWorkspace = explicitWorkspace;

if (!depNode) {
// it's an external dependency, store the resolution and bail
16 changes: 16 additions & 0 deletions .yarn-patches/@lerna/package.patch
@@ -0,0 +1,16 @@
diff --git a/index.js b/index.js
index 67b997073..6e2912e9e 100644
--- a/index.js
+++ b/index.js
@@ -209,6 +209,11 @@ class Package {
if (resolved.registry || resolved.type === "directory") {
// a version (1.2.3) OR range (^1.2.3) OR directory (file:../foo-pkg)
depCollection[depName] = `${savePrefix}${depVersion}`;
+
+ // https://github.com/lerna/lerna/pull/2450
+ if (resolved.explicitWorkspace) {
+ depCollection[depName] = `workspace:${depCollection[depName]}`;
+ }
} else if (resolved.gitCommittish) {
// a git url with matching committish (#v1.2.3 or #1.2.3)
const [tagPrefix] = /^\D*/.exec(resolved.gitCommittish);
17 changes: 17 additions & 0 deletions .yarn-patches/@lerna/version.patch
@@ -0,0 +1,17 @@
diff --git a/command.js b/command.js
index 4109ff1db..86349e057 100644
--- a/command.js
+++ b/command.js
@@ -12,6 +12,12 @@ exports.describe = "Bump version of packages changed since the last release.";

exports.builder = (yargs, composed) => {
const opts = {
+ // THIS IS ONLY USED BY BABEL
+ "exclude-dependents": {
+ describe: "Exclude all transitive dependents.",
+ type: "boolean"
+ },
+
"allow-branch": {
describe: "Specify which branches to allow versioning from.",
type: "array",

0 comments on commit d048ebd

Please sign in to comment.