vuecssuiant-designantdreactantantd-vueenterprisefrontendui-designvue-antdvue-antd-uivue3vuecomponent
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
80 lines
1.8 KiB
80 lines
1.8 KiB
const fs = require('fs'); |
|
const path = require('path'); |
|
|
|
const cwd = process.cwd(); |
|
|
|
function getProjectPath(...filePath) { |
|
return path.join(cwd, ...filePath); |
|
} |
|
|
|
function resolve(moduleName) { |
|
return require.resolve(moduleName); |
|
} |
|
|
|
// We need hack the require to ensure use package module first |
|
// For example, `typescript` is required by `gulp-typescript` but provided by `antd` |
|
// we do not need for ant-design-vue |
|
let injected = false; |
|
function injectRequire() { |
|
if (injected) return; |
|
|
|
const Module = require('module'); |
|
|
|
const oriRequire = Module.prototype.require; |
|
Module.prototype.require = function (...args) { |
|
const moduleName = args[0]; |
|
try { |
|
return oriRequire.apply(this, args); |
|
} catch (err) { |
|
const newArgs = [...args]; |
|
if (moduleName[0] !== '/') { |
|
newArgs[0] = getProjectPath('node_modules', moduleName); |
|
} |
|
return oriRequire.apply(this, newArgs); |
|
} |
|
}; |
|
|
|
injected = true; |
|
} |
|
|
|
function getConfig() { |
|
const configPath = getProjectPath('.antd-tools.config.js'); |
|
if (fs.existsSync(configPath)) { |
|
return require(configPath); |
|
} |
|
|
|
return {}; |
|
} |
|
|
|
/** |
|
* 是否存在可用的browserslist config |
|
* https://github.com/browserslist/browserslist#queries |
|
* @returns |
|
*/ |
|
function isThereHaveBrowserslistConfig() { |
|
try { |
|
const packageJson = require(getProjectPath('package.json')); |
|
if (packageJson.browserslist) { |
|
return true; |
|
} |
|
} catch (e) { |
|
// |
|
} |
|
if (fs.existsSync(getProjectPath('.browserslistrc'))) { |
|
return true; |
|
} |
|
if (fs.existsSync(getProjectPath('browserslist'))) { |
|
return true; |
|
} |
|
// parent项目的配置支持,需要再补充 |
|
// ROWSERSLIST ROWSERSLIST_ENV 变量的形式,需要再补充。 |
|
return false; |
|
} |
|
|
|
module.exports = { |
|
getProjectPath, |
|
resolve, |
|
injectRequire, |
|
getConfig, |
|
isThereHaveBrowserslistConfig, |
|
};
|
|
|