const shelljs = require('shelljs'); const path = require('path'); const distDir = path.join(__dirname, '../dist/node'); shelljs.rm('-rf', distDir); shelljs.mkdir('-p', distDir); const cpPaths = [ 'favicon.ico', '.nvmrc', '.npmrc', 'process.json', 'Dockerfile', 'yarn.lock', 'package.json', '*.js', 'config', 'doraemon', 'utils', 'apps/index.html', 'dist/degrade.html', 'dist/manifest.json', 'dist/manifest.server.json' ]; new Promise(resolve => { // 加载manifest.json文件 resolve(); }).then(() => { // 拷贝node代码 cpPaths.forEach(p => { let dist = distDir; let file = p; if (typeof p === 'object') { dist = path.join(dist, p[1]); file = p[0]; if (!shelljs.test('-e', dist)) { shelljs.mkdir('-p', dist); } } shelljs.cp('-R', path.join(__dirname, '../', file), dist); }); }).then(() => { // 验证文件正确性 if (!shelljs.test('-e', path.join(distDir, 'manifest.json'))) { console.error('error:check manifest.json faild'); return process.exit(1); //eslint-disable-line } if (!shelljs.test('-e', path.join(distDir, 'manifest.server.json'))) { console.error('error:check manifest.server.json faild'); return process.exit(1); //eslint-disable-line } }).then(() => { // 安装依赖和清理node_modules shelljs.cd(distDir); if (shelljs.exec('yarn --production=true').code !== 0) { throw 'yarn install faild'; } }).catch(error => { console.error(`error:${error}`); return process.exit(1); //eslint-disable-line });