• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

ckeditor / ckeditor5-package-generator / #765

pending completion
#765

travis-ci

117 of 117 branches covered (100.0%)

Branch coverage included in aggregate %.

416 of 416 relevant lines covered (100.0%)

8.97 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

100.0
/packages/ckeditor5-package-generator/lib/utils/get-dependencies-versions.js
1
/**
2
 * @license Copyright (c) 2020-2025, CKSource Holding sp. z o.o. All rights reserved.
3
 * For licensing, see LICENSE.md.
4
 */
5

6
import upath from 'upath';
7
import getPackageVersion from './get-package-version.js';
8

8✔
9
/**
8✔
10
 * Returns an object containing version for the packages listed below:
11
 *
12
 *   * ckeditor5
13
 *   * @ckeditor/ckeditor5-inspector (as `ckeditor5Inspector`)
14
 *   * @ckeditor/ckeditor5-dev-build-tools (as `ckeditor5DevBuildTools`)
15
 *   * eslint-config-ckeditor5 (as `eslintConfigCkeditor5`)
16
 *   * stylelint-config-ckeditor5 (as `stylelintConfigCkeditor5`)
17
 *   * @ckeditor/ckeditor5-package-tools (as `packageTools`)
18
 *
19
 * The value for the `packageTools` package depends on the `options.devMode` modifier:
20
 *
21
 *   * `true` - an absolute path to the locally cloned package.
22
 *   * `false` - the latest version published on npm.
23
 *
24
 * @param {Logger} logger
25
 * @param {Object} options
26
 * @param {Boolean} options.dev
27
 * @param {Boolean} [options.useReleaseDirectory=false]
28
 * @returns {Object}
29
 */
8✔
30
export default function getDependenciesVersions( logger, { dev, useReleaseDirectory = false } ) {
7✔
31
        logger.process( 'Collecting the latest CKEditor 5 packages versions...' );
32

7✔
33
        return {
34
                ckeditor5: getPackageVersion( 'ckeditor5' ),
35
                ckeditor5PremiumFeatures: getPackageVersion( 'ckeditor5-premium-features' ),
36
                ckeditor5Inspector: getPackageVersion( '@ckeditor/ckeditor5-inspector' ),
37
                ckeditor5DevBuildTools: getPackageVersion( '@ckeditor/ckeditor5-dev-build-tools' ),
7✔
38
                eslintConfigCkeditor5: getPackageVersion( 'eslint-config-ckeditor5' ),
39
                eslintPluginCkeditor5Rules: getPackageVersion( 'eslint-plugin-ckeditor5-rules' ),
40
                stylelintConfigCkeditor5: getPackageVersion( 'stylelint-config-ckeditor5' ),
41
                packageTools: resolvePackageToolsDependency( logger, { dev, useReleaseDirectory } )
42
        };
43
}
44

45
function resolvePackageToolsDependency( logger, { dev, useReleaseDirectory } ) {
46
        if ( !dev ) {
47
                return '^' + getPackageVersion( '@ckeditor/ckeditor5-package-tools' );
48
        }
49

50
        // Controls how `ckeditor5-package-tools` is linked:
51
        // - `useReleaseDirectory=true` → `/root/release/ckeditor5-package-tools`
52
        // - `useReleaseDirectory=false` → `/root/packages/ckeditor5-package-tools`
53
        //
54
        // The repository defaults to `pnpm`, whose dependency layout is not fully compatible with Yarn.
55
        // To avoid traversing `node_modules/` (which may contain symlinks), enabling `useReleaseDirectory`
56
        // ensures a clean package structure without external modules.
57
        //
58
        // See: https://github.com/ckeditor/ckeditor5-package-generator/issues/253.
59
        const packageToolsPath = [
60
                import.meta.dirname,
61
                '..',
62
                '..',
63
                '..'
64
        ];
65

66
        if ( useReleaseDirectory ) {
67
                logger.verboseInfo( 'Using the `release/` directory for `ckeditor5-package-tools`. Ensure it exists and is up-to-date.' );
68

69
                packageToolsPath.push( '..' );
70
                packageToolsPath.push( 'release' );
71
        }
72

73
        packageToolsPath.push( 'ckeditor5-package-tools' );
74

75
        // Windows accepts unix-like paths in `package.json`.
76
        return 'file:' + upath.resolve( ...packageToolsPath );
77
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc