UNPKG

1.33 kBJavaScriptView Raw
1#!/usr/bin/env node
2'use strict'
3
4const chalk = require('chalk')
5const semver = require('semver')
6// 引用 config 子模块
7// 不引用 config/index 避免 env 过早初始化
8const argv = require('../config/argv')
9const paths = require('../config/paths')
10const requiredVersion = require('../package.json').engines.node
11const currentNodeVersion = process.versions.node
12
13// node >= 8.0.0
14if (!semver.satisfies(currentNodeVersion, requiredVersion)) {
15 console.log(
16 chalk.red(
17 `You are running Node ${currentNodeVersion}.\n` +
18 `but @mara/x requires Node ${requiredVersion}.\n` +
19 'Please update your version of Node.\n'
20 )
21 )
22 process.exit(1)
23}
24
25const cmdMap = {
26 dev: 'serve',
27 test: 'test',
28 build: 'build',
29 lib: 'buildLib',
30 dll: 'dll',
31 hook: 'hook'
32}
33const cmd = cmdMap[argv._[0]]
34
35if (argv.v) {
36 console.log(require(paths.maraxPackageJson).version)
37} else if (!cmd) {
38 // rawArgv 是当前 bin 脚本的参数,为 bin 以后的内容
39 // 如 marax build index => rawArgv: ['build', 'index']
40 const rawArgv = process.argv.slice(2)
41
42 console.log('\nUnknown script "' + rawArgv + '".')
43 console.log('Perhaps you need to update @mara/x?')
44 console.log('See: https://github.com/SinaMFE/mara/blob/master/README.md')
45 process.exit(0)
46} else {
47 require(`../scripts/${cmd}`)(argv)
48}