mirror of
https://github.com/pulsar-edit/pulsar.git
synced 2024-09-20 15:37:46 +03:00
73 lines
2.4 KiB
JavaScript
73 lines
2.4 KiB
JavaScript
// This module exports a function that copies all the static assets into the
|
|
// appropriate location in the build output directory.
|
|
|
|
'use strict';
|
|
|
|
const path = require('path');
|
|
const fs = require('fs-extra');
|
|
const CONFIG = require('../config');
|
|
const glob = require('glob');
|
|
const includePathInPackagedApp = require('./include-path-in-packaged-app');
|
|
|
|
module.exports = function() {
|
|
console.log(`Copying assets to ${CONFIG.intermediateAppPath}`);
|
|
let srcPaths = [
|
|
path.join(CONFIG.repositoryRootPath, 'benchmarks', 'benchmark-runner.js'),
|
|
path.join(CONFIG.repositoryRootPath, 'dot-atom'),
|
|
path.join(CONFIG.repositoryRootPath, 'exports'),
|
|
path.join(CONFIG.repositoryRootPath, 'package.json'),
|
|
path.join(CONFIG.repositoryRootPath, 'static'),
|
|
path.join(CONFIG.repositoryRootPath, 'src'),
|
|
path.join(CONFIG.repositoryRootPath, 'vendor')
|
|
];
|
|
srcPaths = srcPaths.concat(
|
|
glob.sync(path.join(CONFIG.repositoryRootPath, 'spec', '*.*'), {
|
|
ignore: path.join('**', '*-spec.*')
|
|
})
|
|
);
|
|
for (let srcPath of srcPaths) {
|
|
fs.copySync(srcPath, computeDestinationPath(srcPath), {
|
|
filter: includePathInPackagedApp
|
|
});
|
|
}
|
|
|
|
// Run a copy pass to dereference symlinked directories under node_modules.
|
|
// We do this to ensure that symlinked repo-local bundled packages get
|
|
// copied to the output folder correctly. We dereference only the top-level
|
|
// symlinks and not nested symlinks to avoid issues where symlinked binaries
|
|
// are duplicated in Atom's installation packages (see atom/atom#18490).
|
|
const nodeModulesPath = path.join(CONFIG.repositoryRootPath, 'node_modules');
|
|
glob
|
|
.sync(path.join(nodeModulesPath, '*'))
|
|
.map(p =>
|
|
fs.lstatSync(p).isSymbolicLink()
|
|
? path.resolve(nodeModulesPath, fs.readlinkSync(p))
|
|
: p
|
|
)
|
|
.forEach(modulePath => {
|
|
const destPath = path.join(
|
|
CONFIG.intermediateAppPath,
|
|
'node_modules',
|
|
path.basename(modulePath)
|
|
);
|
|
fs.copySync(modulePath, destPath, { filter: includePathInPackagedApp });
|
|
});
|
|
|
|
fs.copySync(
|
|
path.join(
|
|
CONFIG.repositoryRootPath,
|
|
'resources',
|
|
'app-icons',
|
|
CONFIG.channel,
|
|
'png',
|
|
'1024.png'
|
|
),
|
|
path.join(CONFIG.intermediateAppPath, 'resources', 'atom.png')
|
|
);
|
|
};
|
|
|
|
function computeDestinationPath(srcPath) {
|
|
const relativePath = path.relative(CONFIG.repositoryRootPath, srcPath);
|
|
return path.join(CONFIG.intermediateAppPath, relativePath);
|
|
}
|