-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathbootstrap.sh
executable file
·37 lines (33 loc) · 1.35 KB
/
bootstrap.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#!/usr/bin/env bash
##
# Copyright 2016 Google Inc. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
set -e
npm_bin_dir=`npm bin`
# Build every package and hoist its dependencies to the top-level `node_modules/` folder
${npm_bin_dir}/lerna bootstrap --hoist
${npm_bin_dir}/lerna clean --yes
# Create symlinks from top-level `node_modules/` folder to every package
# (modified to ensure that the target directory exists)
packages=(`find packages -name "package.json" -maxdepth 2 | xargs -I '{}' dirname '{}'`)
for package in ${packages[@]}; do
npmname=`node -e "console.log(require(\"${INIT_CWD}/${package}/package.json\").name)"`
if [ ! -L ${INIT_CWD}/node_modules/${npmname} ]; then
source="${INIT_CWD}/${package}"
target="${INIT_CWD}/node_modules/${npmname}"
mkdir -p `dirname "$target"`
ln -sfv ${source} ${target}
fi
done