PHP 8.2.30
Preview: build.js Size: 4.44 KB
//lib/node_modules/npm/lib/build.js

// npm build command

// everything about the installation after the creation of
// the .npm/{name}/{version}/package folder.
// linking the modules into the npm.root,
// resolving dependencies, etc.

// This runs AFTER install or link are completed.

var npm = require('./npm.js')
var log = require('npmlog')
var chain = require('slide').chain
var path = require('path')
var fs = require('graceful-fs')
var lifecycle = require('./utils/lifecycle.js')
var readJson = require('read-package-json')
var binLinks = require('bin-links')
var binLinksConfig = require('./config/bin-links.js')
var ini = require('ini')
var writeFile = require('write-file-atomic')

module.exports = build
build.usage = 'npm build [<folder>]'

build._didBuild = {}
build._noLC = {}
function build (args, global, didPre, didRB, cb) {
  if (typeof cb !== 'function') {
    cb = didRB
    didRB = false
  }
  if (typeof cb !== 'function') {
    cb = didPre
    didPre = false
  }
  if (typeof cb !== 'function') {
    cb = global
    global = npm.config.get('global')
  }

  if (!args.length) {
    readJson(path.resolve(npm.localPrefix, 'package.json'), function (er, pkg) {
      if (!args.length && pkg && pkg.scripts && pkg.scripts.build) {
        log.warn('build', '`npm build` called with no arguments. Did you mean to `npm run-script build`?')
      }
      cb()
    })
  } else {
    // it'd be nice to asyncMap these, but actually, doing them
    // in parallel generally munges up the output from node-waf
    var builder = build_(global, didPre, didRB)
    chain(args.map(function (arg) {
      return function (cb) {
        builder(arg, cb)
      }
    }), cb)
  }
}

function build_ (global, didPre, didRB) {
  return function (folder, cb) {
    folder = path.resolve(folder)
    if (build._didBuild[folder]) log.info('build', 'already built', folder)
    build._didBuild[folder] = true
    log.info('build', folder)
    readJson(path.resolve(folder, 'package.json'), function (er, pkg) {
      if (er) return cb(er)
      chain([
        !didPre && [lifecycle, pkg, 'preinstall', folder],
        [linkStuff, pkg, folder, global],
        !didRB && [rebuildBundles, pkg, folder],
        [writeBuiltinConf, pkg, folder],
        didPre !== build._noLC && [lifecycle, pkg, 'install', folder],
        didPre !== build._noLC && [lifecycle, pkg, 'postinstall', folder]
      ],
      cb)
    })
  }
}

var writeBuiltinConf = build.writeBuiltinConf = function (pkg, folder, cb) {
  // the builtin config is "sticky". Any time npm installs
  // itself globally, it puts its builtin config file there
  var parent = path.dirname(folder)
  var dir = npm.globalDir

  // Make this count for canary, too
  if ((pkg.name !== 'npm' && pkg.name !== 'npmc') ||
      !npm.config.get('global') ||
      !npm.config.usingBuiltin ||
      dir !== parent) {
    return cb()
  }

  var data = ini.stringify(npm.config.sources.builtin.data)
  writeFile(path.resolve(folder, 'npmrc'), data, cb)
}

var linkStuff = build.linkStuff = function (pkg, folder, global, cb) {
  // allow to opt out of linking binaries.
  if (npm.config.get('bin-links') === false) return cb()
  return binLinks(pkg, folder, global, binLinksConfig(pkg), cb)
}

function rebuildBundles (pkg, folder, cb) {
  if (!npm.config.get('rebuild-bundle')) return cb()

  var deps = Object.keys(pkg.dependencies || {})
    .concat(Object.keys(pkg.devDependencies || {}))
  var bundles = pkg.bundleDependencies || pkg.bundledDependencies || []

  fs.readdir(path.resolve(folder, 'node_modules'), function (er, files) {
    // error means no bundles
    if (er) return cb()

    log.verbose('rebuildBundles', files)
    // don't asyncMap these, because otherwise build script output
    // gets interleaved and is impossible to read
    chain(files.filter(function (file) {
      // rebuild if:
      // not a .folder, like .bin or .hooks
      return !file.match(/^[._-]/) &&
          // not some old 0.x style bundle
          file.indexOf('@') === -1 &&
          // either not a dep, or explicitly bundled
          (deps.indexOf(file) === -1 || bundles.indexOf(file) !== -1)
    }).map(function (file) {
      file = path.resolve(folder, 'node_modules', file)
      return function (cb) {
        if (build._didBuild[file]) return cb()
        log.verbose('rebuild bundle', file)
        // if file is not a package dir, then don't do it.
        fs.lstat(path.resolve(file, 'package.json'), function (er) {
          if (er) return cb()
          build_(false)(file, cb)
        })
      }
    }), cb)
  })
}

Directory Contents

Dirs: 6 × Files: 66

Name Size Perms Modified Actions
auth DIR
- drwxr-xr-x 2024-03-03 22:36:29
Edit Download
config DIR
- drwxr-xr-x 2024-03-03 22:36:29
Edit Download
doctor DIR
- drwxr-xr-x 2024-03-03 22:36:29
Edit Download
install DIR
- drwxr-xr-x 2024-03-03 22:36:29
Edit Download
search DIR
- drwxr-xr-x 2024-03-03 22:36:29
Edit Download
utils DIR
- drwxr-xr-x 2024-03-03 22:36:29
Edit Download
5.54 KB lrw-r--r-- 2021-03-10 14:36:36
Edit Download
1.31 KB lrw-r--r-- 2021-03-10 14:36:36
Edit Download
10.56 KB lrw-r--r-- 2021-03-10 14:36:36
Edit Download
515 B lrw-r--r-- 2021-03-10 14:36:36
Edit Download
864 B lrw-r--r-- 2021-03-10 14:36:35
Edit Download
4.44 KB lrw-r--r-- 2021-03-10 14:36:36
Edit Download
4.66 KB lrw-r--r-- 2021-03-10 14:36:36
Edit Download
1.31 KB lrw-r--r-- 2021-03-10 14:36:36
Edit Download
7.11 KB lrw-r--r-- 2021-03-10 14:36:36
Edit Download
7.43 KB lrw-r--r-- 2021-03-10 14:36:36
Edit Download
4.88 KB lrw-r--r-- 2021-03-10 14:36:35
Edit Download
2.11 KB lrw-r--r-- 2021-03-10 14:36:35
Edit Download
4.11 KB lrw-r--r-- 2021-03-10 14:36:36
Edit Download
1.04 KB lrw-r--r-- 2021-03-10 14:36:36
Edit Download
3.98 KB lrw-r--r-- 2021-03-10 14:36:35
Edit Download
1.37 KB lrw-r--r-- 2021-03-10 14:36:36
Edit Download
1.67 KB lrw-r--r-- 2021-03-10 14:36:36
Edit Download
3.97 KB lrw-r--r-- 2021-03-10 14:36:36
Edit Download
1.77 KB lrw-r--r-- 2021-03-10 14:36:36
Edit Download
4.91 KB lrw-r--r-- 2021-03-10 14:36:36
Edit Download
235 B lrw-r--r-- 2021-03-10 14:36:36
Edit Download
5.64 KB lrw-r--r-- 2021-03-10 14:36:36
Edit Download
6.35 KB lrw-r--r-- 2021-03-10 14:36:36
Edit Download
4.62 KB lrw-r--r-- 2021-03-10 14:36:35
Edit Download
2.74 KB lrw-r--r-- 2021-03-10 14:36:36
Edit Download
486 B lrw-r--r-- 2021-03-10 14:36:36
Edit Download
507 B lrw-r--r-- 2021-03-10 14:36:36
Edit Download
36.47 KB lrw-r--r-- 2021-03-10 14:36:36
Edit Download
5.60 KB lrw-r--r-- 2021-03-10 14:36:36
Edit Download
1.26 KB lrw-r--r-- 2021-03-10 14:36:36
Edit Download
16.09 KB lrw-r--r-- 2021-03-10 14:36:36
Edit Download
14.37 KB lrw-r--r-- 2021-03-10 14:36:36
Edit Download
4.18 KB lrw-r--r-- 2021-03-10 14:36:36
Edit Download
12.28 KB lrw-r--r-- 2021-03-10 14:36:35
Edit Download
6.60 KB lrw-r--r-- 2021-03-10 14:36:36
Edit Download
11.79 KB lrw-r--r-- 2021-03-10 14:36:36
Edit Download
1.11 KB lrw-r--r-- 2021-03-10 14:36:36
Edit Download
330 B lrw-r--r-- 2021-03-10 14:36:36
Edit Download
11.13 KB lrw-r--r-- 2021-03-10 14:36:36
Edit Download
2.23 KB lrw-r--r-- 2021-03-10 14:36:36
Edit Download
5.14 KB lrw-r--r-- 2021-03-10 14:36:36
Edit Download
2.09 KB lrw-r--r-- 2021-03-10 14:36:36
Edit Download
1.44 KB lrw-r--r-- 2021-03-10 14:36:35
Edit Download
64 B lrw-r--r-- 2021-03-10 14:36:36
Edit Download
320 B lrw-r--r-- 2021-03-10 14:36:35
Edit Download
5.41 KB lrw-r--r-- 2021-03-10 14:36:36
Edit Download
3.36 KB lrw-r--r-- 2021-03-10 14:36:36
Edit Download
276 B lrw-r--r-- 2021-03-10 14:36:36
Edit Download
9.82 KB lrw-r--r-- 2021-03-10 14:36:36
Edit Download
2.11 KB lrw-r--r-- 2021-03-10 14:36:36
Edit Download
1.03 KB lrw-r--r-- 2021-03-10 14:36:36
Edit Download
62 B lrw-r--r-- 2021-03-10 14:36:36
Edit Download
61 B lrw-r--r-- 2021-03-10 14:36:36
Edit Download
509 B lrw-r--r-- 2021-03-10 14:36:36
Edit Download
4.61 KB lrw-r--r-- 2021-03-10 14:36:36
Edit Download
374 B lrw-r--r-- 2021-03-10 14:36:36
Edit Download
6.66 KB lrw-r--r-- 2021-03-10 14:36:36
Edit Download
4.27 KB lrw-r--r-- 2021-03-10 14:36:36
Edit Download
2.21 KB lrw-r--r-- 2021-03-10 14:36:35
Edit Download
3.51 KB lrw-r--r-- 2021-03-10 14:36:36
Edit Download
2.16 KB lrw-r--r-- 2021-03-10 14:36:36
Edit Download
9.79 KB lrw-r--r-- 2021-03-10 14:36:36
Edit Download
15.11 KB lrw-r--r-- 2021-03-10 14:36:36
Edit Download
4.01 KB lrw-r--r-- 2021-03-10 14:36:35
Edit Download
1.77 KB lrw-r--r-- 2021-03-10 14:36:36
Edit Download
1.62 KB lrw-r--r-- 2021-03-10 14:36:35
Edit Download

If ZipArchive is unavailable, a .tar will be created (no compression).