Merge branch 'dev' of codeup.aliyun.com:61c14a7efa282c88e103c23f/oak-cli into dev
This commit is contained in:
commit
379dd2c455
|
|
@ -6,8 +6,8 @@ const watchFolders = process.env.NODE_ENV === 'production' ? ['../src', '../node
|
||||||
];
|
];
|
||||||
|
|
||||||
const sourceExts = (process.env.NODE_ENV === 'production' || process.env.PROD === 'true') ?
|
const sourceExts = (process.env.NODE_ENV === 'production' || process.env.PROD === 'true') ?
|
||||||
['prod.ts', 'ts', 'tsx', 'prod.js', 'js', 'jsx', 'less', 'json'] :
|
['prod.ts', 'ts', 'tsx', 'prod.js', 'js', 'jsx', 'less', 'json', 'svg'] :
|
||||||
['dev.ts', 'ts', 'tsx', 'dev.js', 'js', 'jsx', 'less', 'json'];
|
['dev.ts', 'ts', 'tsx', 'dev.js', 'js', 'jsx', 'less', 'json', 'svg'];
|
||||||
|
|
||||||
const NullModules = ['fs', 'url'];
|
const NullModules = ['fs', 'url'];
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
|
|
@ -15,6 +15,9 @@ const traverse = require('@babel/traverse').default;
|
||||||
const t = require('@babel/types');
|
const t = require('@babel/types');
|
||||||
const path = require('path');
|
const path = require('path');
|
||||||
const less = require('less');
|
const less = require('less');
|
||||||
|
const svgTransformer = require('react-native-svg-transformer');
|
||||||
|
const lessTransformer = require('react-native-less-transformer');
|
||||||
|
|
||||||
const css2rn = require("css-to-react-native-transform").default;
|
const css2rn = require("css-to-react-native-transform").default;
|
||||||
const { parseSync, transformFromAstSync, transformSync: babelTransform } = require("@babel/core");
|
const { parseSync, transformFromAstSync, transformSync: babelTransform } = require("@babel/core");
|
||||||
const nullthrows = require("nullthrows");
|
const nullthrows = require("nullthrows");
|
||||||
|
|
@ -94,12 +97,16 @@ function transform({ filename, options, plugins, src }) {
|
||||||
};
|
};
|
||||||
|
|
||||||
if (filename.endsWith('less')) {
|
if (filename.endsWith('less')) {
|
||||||
return renderToCSS({ src, filename, options }).then((css) => {
|
// return renderToCSS({ src, filename, options }).then((css) => {
|
||||||
const cssObject = renderCSSToReactNative(css);
|
// const cssObject = renderCSSToReactNative(css);
|
||||||
const newSrc = `module.exports = ${JSON.stringify(cssObject)}`;
|
// const newSrc = `module.exports = ${JSON.stringify(cssObject)}`;
|
||||||
return transInner(newSrc);
|
// return transInner(newSrc);
|
||||||
});
|
// });
|
||||||
|
return lessTransformer.transform({ src, filename, options });
|
||||||
}
|
}
|
||||||
|
else if (filename.endsWith('.svg')) {
|
||||||
|
return svgTransformer.transform({ src, filename, options });
|
||||||
|
}
|
||||||
|
|
||||||
return transInner(src);
|
return transInner(src);
|
||||||
} finally {
|
} finally {
|
||||||
|
|
|
||||||
|
|
@ -109,6 +109,8 @@
|
||||||
"react-app-polyfill": "^3.0.0",
|
"react-app-polyfill": "^3.0.0",
|
||||||
"react-dev-utils": "^12.0.1",
|
"react-dev-utils": "^12.0.1",
|
||||||
"react-native": "^0.72.7",
|
"react-native": "^0.72.7",
|
||||||
|
"react-native-less-transformer": "^1.4.1",
|
||||||
|
"react-native-svg-transformer": "^1.2.0",
|
||||||
"react-refresh": "^0.11.0",
|
"react-refresh": "^0.11.0",
|
||||||
"required-path": "^1.0.1",
|
"required-path": "^1.0.1",
|
||||||
"resolve": "^1.20.0",
|
"resolve": "^1.20.0",
|
||||||
|
|
|
||||||
27
src/build.ts
27
src/build.ts
|
|
@ -25,15 +25,15 @@ export default async function build(cmd: any) {
|
||||||
makeLocale('', true);
|
makeLocale('', true);
|
||||||
//ts类型检查 waring 还是error,
|
//ts类型检查 waring 还是error,
|
||||||
//主要web受影响,error级别的话 控制台和网页都报错,warning级别的话 控制台报错
|
//主要web受影响,error级别的话 控制台和网页都报错,warning级别的话 控制台报错
|
||||||
|
// development/staging/production
|
||||||
const TSC_COMPILE_ON_ERROR = cmd.check !== 'error';
|
const TSC_COMPILE_ON_ERROR = cmd.check !== 'error';
|
||||||
Success(
|
Success(
|
||||||
`${success(
|
`${success(
|
||||||
`build ${cmd.target} environment:${cmd.mode} ${
|
`build ${cmd.target} environment:${cmd.mode} ${
|
||||||
cmd.mode !== 'production'
|
['development'].includes(cmd.mode) ? `server:${!!cmd.prod}` : ''
|
||||||
? `server:${!!cmd.prod}`
|
|
||||||
: ''
|
|
||||||
} ${
|
} ${
|
||||||
cmd.target !== 'web' && cmd.mode !== 'production'
|
['mp', 'wechatMp'].includes(cmd.target) &&
|
||||||
|
['development'].includes(cmd.mode)
|
||||||
? `split:${!!cmd.split}`
|
? `split:${!!cmd.split}`
|
||||||
: ''
|
: ''
|
||||||
}`
|
}`
|
||||||
|
|
@ -86,7 +86,7 @@ export default async function build(cmd: any) {
|
||||||
!!cmd.memoryLimit && `MEMORY_LIMIT=${cmd.memoryLimit}`,
|
!!cmd.memoryLimit && `MEMORY_LIMIT=${cmd.memoryLimit}`,
|
||||||
`node`,
|
`node`,
|
||||||
cmd.memoryLimit && `--max_old_space_size=${cmd.memoryLimit}`,
|
cmd.memoryLimit && `--max_old_space_size=${cmd.memoryLimit}`,
|
||||||
require.resolve(
|
resolve(
|
||||||
`../scripts/${
|
`../scripts/${
|
||||||
cmd.mode === 'production'
|
cmd.mode === 'production'
|
||||||
? 'build-web.js'
|
? 'build-web.js'
|
||||||
|
|
@ -104,11 +104,13 @@ export default async function build(cmd: any) {
|
||||||
} else {
|
} else {
|
||||||
Error(`${error(`执行失败`)}`);
|
Error(`${error(`执行失败`)}`);
|
||||||
}
|
}
|
||||||
}
|
} else if (['native', 'rn'].includes(cmd.target)) {
|
||||||
else if (['native', 'rn'].includes(cmd.target)) {
|
|
||||||
const prjDir = process.cwd();
|
const prjDir = process.cwd();
|
||||||
const cwd = resolve(prjDir, cmd.subDir || 'native');
|
const cwd = resolve(prjDir, cmd.subDir || 'native');
|
||||||
copyFileSync(resolve(prjDir, 'package.json'), resolve(cwd, 'package.json'));
|
copyFileSync(
|
||||||
|
resolve(prjDir, 'package.json'),
|
||||||
|
resolve(cwd, 'package.json')
|
||||||
|
);
|
||||||
// rn不支持注入NODE_ENVIRONMENT这样的环境变量,cross-env没有用
|
// rn不支持注入NODE_ENVIRONMENT这样的环境变量,cross-env没有用
|
||||||
/* const result = spawn.sync(
|
/* const result = spawn.sync(
|
||||||
'react-native',
|
'react-native',
|
||||||
|
|
@ -127,7 +129,7 @@ export default async function build(cmd: any) {
|
||||||
`NODE_ENV=${cmd.mode}`,
|
`NODE_ENV=${cmd.mode}`,
|
||||||
'OAK_PLATFORM=native',
|
'OAK_PLATFORM=native',
|
||||||
'react-native',
|
'react-native',
|
||||||
'start'
|
'start',
|
||||||
].filter(Boolean),
|
].filter(Boolean),
|
||||||
{
|
{
|
||||||
cwd,
|
cwd,
|
||||||
|
|
@ -140,12 +142,9 @@ export default async function build(cmd: any) {
|
||||||
} else {
|
} else {
|
||||||
Error(`${error(`执行失败`)}`);
|
Error(`${error(`执行失败`)}`);
|
||||||
}
|
}
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
Error(
|
Error(
|
||||||
`${error(
|
`${error(`target could only be web or mp(wechatMp) or rn(native)`)}`
|
||||||
`target could only be web or mp(wechatMp) or rn(native)`
|
|
||||||
)}`
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue