Skip to content

Commit 0c1495f

Browse files
Merge pull request #178 from shoutem/release/0.16.0
Release/0.16.0
2 parents 269b7ca + 6766d92 commit 0c1495f

File tree

4 files changed

+48
-10
lines changed

4 files changed

+48
-10
lines changed

package-lock.json

+3-3
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@shoutem/cli",
3-
"version": "0.15.2",
3+
"version": "0.16.0",
44
"description": "Command-line tools for Shoutem applications",
55
"repository": {
66
"type": "git",

src/clients/default-package-manager.js

+6-1
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,12 @@ export function setDefaultPackageManager(name) {
1313

1414
export function getDefaultPackageManager() {
1515
try {
16-
return fs.readFileSync(defaultPackageManagerFilePath, 'utf8');
16+
// Disable bun in favour of npm for the time being
17+
const resolvedManager = fs.readFileSync(
18+
defaultPackageManagerFilePath,
19+
'utf8',
20+
);
21+
return resolvedManager === 'bun' ? 'npm' : resolvedManager;
1722
} catch (err) {
1823
setDefaultPackageManager('npm');
1924
return 'npm';

src/services/packer.js

+38-5
Original file line numberDiff line numberDiff line change
@@ -26,19 +26,26 @@ function hasPackageJson(dir) {
2626
}
2727

2828
async function packageManagerPack(dir, destinationDir) {
29-
const resultFilename = path.join(destinationDir, `${path.basename(dir)}.tgz`);
30-
const packageJsonPath = path.join(dir, 'package.json');
29+
const component = path.basename(dir);
30+
const resultFilename = path.join(destinationDir, `${component}.tgz`);
31+
const isWeb = component === 'web';
32+
const appDir = isWeb ? dir.replace('web', 'app') : dir;
33+
34+
const packageJsonPath = path.join(appDir, 'package.json');
3135

3236
const originalFileContent = await fs.readFile(packageJsonPath);
3337
const packageJson = await readJsonFile(packageJsonPath);
3438

3539
const timestamp = new Date().getTime();
3640
packageJson.version = `${packageJson.version}-build${timestamp}`;
41+
packageJson.dependencies = isWeb
42+
? packageJson.webDependencies
43+
: packageJson.dependencies;
3744

3845
await writeJsonFile(packageJson, packageJsonPath);
39-
const { stdout } = await exec(`${packageManager} pack`, { cwd: dir });
46+
const { stdout } = await exec(`${packageManager} pack`, { cwd: appDir });
4047
const packageFilename = stdout.replace(/\n$/, '');
41-
const packagePath = path.join(dir, packageFilename);
48+
const packagePath = path.join(appDir, packageFilename);
4249

4350
await mv(packagePath, resultFilename);
4451

@@ -104,6 +111,18 @@ function hasExtensionsJson(dir) {
104111
return pathExists(path.join(dir, 'extension.json'));
105112
}
106113

114+
async function hasWebDependencies(dir) {
115+
const packageJsonPath = path.join(dir, 'app', 'package.json');
116+
117+
const packageJson = await readJsonFile(packageJsonPath);
118+
119+
if (!packageJson.webDependencies) {
120+
return false;
121+
}
122+
123+
return true;
124+
}
125+
107126
function hasCloudComponent(dir) {
108127
return hasPackageJson(path.join(dir, 'cloud'));
109128
}
@@ -163,6 +182,12 @@ export default async function shoutemPack(dir, options) {
163182
components.push('cloud');
164183
}
165184

185+
const hasWeb = await hasWebDependencies(dir);
186+
187+
if (hasWeb) {
188+
components.push('web');
189+
}
190+
166191
const packedDirectories = components.map(d => path.join(dir, d));
167192

168193
if (!(await hasExtensionsJson(dir))) {
@@ -177,7 +202,15 @@ export default async function shoutemPack(dir, options) {
177202
const packageDir = path.join(tmpDir, 'package');
178203
await fs.mkdir(packageDir);
179204

180-
const dirsToPack = await Promise.filter(packedDirectories, hasPackageJson);
205+
const filteredDirsToPack = await Promise.filter(
206+
packedDirectories,
207+
hasPackageJson,
208+
);
209+
// We still want to pack the web segment even though it uses package.json
210+
// from the app segment
211+
const dirsToPack = hasWeb
212+
? [...filteredDirsToPack, path.join(dir, 'web')]
213+
: filteredDirsToPack;
181214

182215
if (options.nobuild) {
183216
console.error('Skipping build step due to --nobuild flag.');

0 commit comments

Comments
 (0)