@cnamts/vue-cli-plugin-vue-dash
Version:
Vue CLI plugin to scaffold front-end projects
137 lines (124 loc) • 4.27 kB
JavaScript
const { devDependencies } = require('../../package.json');
/**
* Pin version for alpha and beta and default to `next`
*
* @param {string|undefined} version The version to normalize
* @returns {string} The normalized version
*/
function normalizeVersion(version) {
if (!version) {
return 'next';
}
if (version.includes('alpha') || version.includes('beta')) {
// Remove ^ char to avoid version auto-bump
return version.replace('^', '');
}
return version;
}
const VueDotVersion = normalizeVersion(devDependencies['@cnamts/vue-dot']);
const DesignTokensVersion = normalizeVersion(devDependencies['@cnamts/design-tokens']);
const FormBuilderVersion = normalizeVersion(devDependencies['@cnamts/form-builder']);
const EslintConfigVueVersion = normalizeVersion(devDependencies['@cnamts/eslint-config-vue']);
/**
* Extend package.json
*
* @param {object} api The plugin API
* @param {object} options The plugin options
* @param {string} pm The package manager
* @returns {void}
*/
function extendPackage(api, options, pm) {
const newPackageProperties = {
scripts: {
'serve': 'vue-cli-service serve',
'build': 'vue-cli-service build',
'lint': 'vue-cli-service lint',
'test:unit': 'vue-cli-service test:unit'
},
dependencies: {
'@cnamts/eslint-config-vue': EslintConfigVueVersion,
'@cnamts/design-tokens': DesignTokensVersion,
'@cnamts/form-builder': FormBuilderVersion,
'@cnamts/vue-dot': VueDotVersion,
'axios': '0.26.1', /** @see https://github.com/axios/axios/issues/4716 */
'core-js': '^3.22.5',
'custom-event-polyfill': '^1.0.7',
'dayjs': '^1.11.2',
'languages': '^0.1.3',
'vue': '^2.7.14',
'vue-input-facade': '^2.0.1',
'vue-meta': '^2.4.0',
'vue-router': '^3.5.3',
'vuetify': '^2.6.5',
'vuex': '^3.6.2'
},
devDependencies: {
'@babel/core': '^7.17.10',
'@mdi/js': '^6.6.96',
'@rushstack/eslint-patch': '^1.1.3',
'@types/jest': '^27.5.1',
'@typescript-eslint/eslint-plugin': '^5.23.0',
'@typescript-eslint/parser': '^5.23.0',
'@vue/cli-plugin-babel': '~5.0.4',
'@vue/cli-plugin-eslint': '~5.0.4',
'@vue/cli-plugin-router': '~5.0.4',
'@vue/cli-plugin-typescript': '~5.0.4',
'@vue/cli-plugin-unit-jest': '~5.0.4',
'@vue/cli-plugin-vuex': '~5.0.4',
'@vue/cli-service': '~5.0.4',
'@vue/eslint-config-standard': '^7.0.0',
'@vue/eslint-config-typescript': '^10.0.0',
'@vue/test-utils': '^1.3.0',
'@vue/vue2-jest': '^27.0.0',
'babel-jest': '^27.5.1',
'eslint': '^8.15.0',
'eslint-plugin-import': '^2.26.0',
'eslint-plugin-node': '^11.1.0',
'eslint-plugin-promise': '^6.0.0',
'eslint-plugin-vue': '^8.7.1',
'jest': '^27.5.1',
'jest-serializer-vue': '^2.0.2',
'lint-staged': '^12.4.1',
'node-polyfill-webpack-plugin': '^2.0.1',
'sass': '~1.32.13', /** @see https://github.com/vuetifyjs/vuetify/issues/13694 */
'sass-loader': '^12.6.0',
'ts-jest': '^27.1.4',
'ts-node': '^10.7.0',
'typescript': '~4.6.4',
'vue-class-component': '^7.2.6',
'vue-cli-plugin-vuetify': '^2.4.8',
'vue-template-compiler': '^2.7.14',
'vuetify-loader': '^1.7.3',
'webfontloader': '^1.6.28',
'webpack': '^5.72.1'
},
engines: {
'node': '^14 || ^16'
},
gitHooks: {
'pre-commit': 'lint-staged'
}
};
if (pm === 'npm') {
newPackageProperties.devDependencies['deepmerge'] = '^4.2.2'; /** @see https://github.com/assurance-maladie-digital/vue-cli-preset/issues/5 */
newPackageProperties.engines['npm'] = '^7.20.6';
} else if (pm === 'yarn') {
newPackageProperties.engines['yarn'] = '^1.12';
}
if (options.i18n) {
newPackageProperties.dependencies['vue-i18n'] = '^8.27.1';
}
if (options.vuexPersist) {
// We need 2.0.1 specifically since in later
// versions there is a bug with IE 11
newPackageProperties.dependencies['vuex-persist'] = '2.0.1';
}
if (options.cypress) {
newPackageProperties.devDependencies['@vue/cli-plugin-e2e-cypress'] = '~5.0.4';
newPackageProperties.devDependencies['cypress'] = '^9.6.1';
newPackageProperties.scripts['test:e2e'] = 'vue-cli-service test:e2e --headless';
newPackageProperties.scripts['test:e2e:gui'] = 'vue-cli-service test:e2e';
}
api.extendPackage(newPackageProperties);
}
module.exports = { extendPackage };