mirror of
https://gitee.com/openharmony/third_party_weex-loader
synced 2024-11-26 17:10:58 +00:00
describe: 包名和模块名不一致,导包用模块名构建不报错 Feature or Bugfix: Bugfix Binary Source:Yes Signed-off-by: youbing54<youbing3@huawei.com>
This commit is contained in:
parent
88c88e8e7b
commit
dd3e0f0232
44
src/util.js
44
src/util.js
@ -21,6 +21,7 @@ import path from 'path'
|
|||||||
import fs from 'fs'
|
import fs from 'fs'
|
||||||
import loaderUtils from 'loader-utils'
|
import loaderUtils from 'loader-utils'
|
||||||
const crypto = require("crypto")
|
const crypto = require("crypto")
|
||||||
|
const JSON5 = require('json5');
|
||||||
import {
|
import {
|
||||||
SourceMapGenerator,
|
SourceMapGenerator,
|
||||||
SourceMapConsumer
|
SourceMapConsumer
|
||||||
@ -285,6 +286,7 @@ export function parseRequireModule (source, resourcePath) {
|
|||||||
if (requireStatements && requireStatements.length) {
|
if (requireStatements && requireStatements.length) {
|
||||||
for (let requireStatement of requireStatements) {
|
for (let requireStatement of requireStatements) {
|
||||||
const requireStatementExec = /\((\"|\')(.+)(\"|\')\)/.exec(requireStatement);
|
const requireStatementExec = /\((\"|\')(.+)(\"|\')\)/.exec(requireStatement);
|
||||||
|
checkModuleIsVaild(requireStatementExec, resourcePath);
|
||||||
if (requireStatement.match(REG_SYSTEM) && requireStatementExec && requireStatementExec.length > 3) {
|
if (requireStatement.match(REG_SYSTEM) && requireStatementExec && requireStatementExec.length > 3) {
|
||||||
if (systemModules.length === 0 || systemModules.includes(requireStatementExec[2] + '.d.ts') ||
|
if (systemModules.length === 0 || systemModules.includes(requireStatementExec[2] + '.d.ts') ||
|
||||||
process.env.DEVICE_LEVEL === 'lite') {
|
process.env.DEVICE_LEVEL === 'lite') {
|
||||||
@ -388,6 +390,48 @@ function copyFile(inputFile, outputFile) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function isPathUnderBase(fullPath, basePath) {
|
||||||
|
const normalizedFullPath = fullPath.replace(/\\/g, '/').toLowerCase();
|
||||||
|
const normalizedBasePath = basePath.replace(/\\/g, '/').toLowerCase() + '/';
|
||||||
|
|
||||||
|
return normalizedFullPath.startsWith(normalizedBasePath);
|
||||||
|
}
|
||||||
|
|
||||||
|
function checkModuleIsVaild(requireStatementExec, resourcePath) {
|
||||||
|
if (process.env.DEVICE_LEVEL !== 'lite' || !requireStatementExec || requireStatementExec.length <= 3) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const appJSPath = path.dirname(path.resolve(process.env.projectPath, 'app.js'));
|
||||||
|
if (!isPathUnderBase(resourcePath, appJSPath)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const json5Path = path.join(process.env.projectPath, '../../../../', 'oh-package.json5');
|
||||||
|
const dependencies = [];
|
||||||
|
if (fs.existsSync(json5Path)) {
|
||||||
|
const json5Content = fs.readFileSync(json5Path, 'utf8');
|
||||||
|
const content = JSON5.parse(json5Content);
|
||||||
|
if (content['dependencies']) {
|
||||||
|
Object.keys(content['dependencies']).forEach(element =>{
|
||||||
|
dependencies.push(element);
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (dependencies.length === 0) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const moduleName = requireStatementExec[2];
|
||||||
|
if (moduleName.includes('../')) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (!dependencies.includes(moduleName)) {
|
||||||
|
throw new Error(`Cannot find module ${moduleName} or its corresponding type declarations.`);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
function copyJsonFile(inputFile, outputFile) {
|
function copyJsonFile(inputFile, outputFile) {
|
||||||
try {
|
try {
|
||||||
const contentInput = JSON.parse(fs.readFileSync(inputFile, 'utf-8'));
|
const contentInput = JSON.parse(fs.readFileSync(inputFile, 'utf-8'));
|
||||||
|
Loading…
Reference in New Issue
Block a user