cncjs
1#!/usr/bin/env node
2
3/* eslint max-len: 0 */
4const fs = require('fs');5const path = require('path');6const _pick = require('lodash/pick');7const _uniq = require('lodash/uniq');8const findImports = require('find-imports');9
10// Copy necessary properties from 'package.json' to 'src/package.json'
11const pkg = require('../package.json');12const pkgApp = require('../src/package.json');13
14const files = [15'src/*.js',16'src/server/**/*.{js,jsx}'17];18
19const resolvedImports = findImports(files, {20flatten: true,21});22
23const deps = _uniq([24'@serialport/parser-readline',25'core-js', // to polyfill ECMAScript features26'regenerator-runtime', // needed to use transpiled generator functions27'debug', // 'debug' is required for electron app28
29// e.g. 'lodash/get' → 'lodash'30...resolvedImports.map(x => x.split('/')[0]),31]).sort();32
33//pkgApp.name = pkg.name; // Exclude the name field
34pkgApp.version = pkg.version;35pkgApp.homepage = pkg.homepage;36pkgApp.author = pkg.author;37pkgApp.license = pkg.license;38pkgApp.repository = pkg.repository;39
40// Copy only Node.js dependencies to application package.json
41pkgApp.dependencies = _pick(pkg.dependencies, deps);42
43const target = path.resolve(__dirname, '../src/package.json');44const content = JSON.stringify(pkgApp, null, 2);45fs.writeFileSync(target, content + '\n', 'utf8');46