cordova - 在cordova上复制额外的文件准备
问题描述
根据cordova文档 cordova prepare
:
将 config.xml 元数据转换为特定于平台的清单文件,复制图标和闪屏,复制指定平台的插件文件,以便项目准备好使用每个原生 SDK 构建。
我使用cordova,npm
并且当我运行npm update
包时会自动更新。在这种特殊情况下,我使用了 npm 包jquery
,其主文件存储在node_modules/jquery/dist/jquery.min.js
. 然后我手动将此文件复制到www/js/res/jquery.min.js
,然后通过以下方式加载它www/index.html
:
<script src="js/res/jquery-ui.min.js"></script>
但我想在cordova prepare
.
因此问题是:您如何自定义您的cordova prepare
, 以便您可以将额外的文件复制到www
目录?
解决方案
只是为了提供一些关于我如何实现它的反馈。你必须使用cordova hooks。
首先在以下位置添加以下行config.xml
<hook type="after_prepare" src="scripts/importNpmPackages.js" />
然后创建一个节点脚本scripts/importNpmPackages.js
来完成这项工作,即将文件从node_modules
目录复制到您想要的位置。我用这个:
const fse = require('fs-extra')
const path = require('path')
var projectRoot
module.exports = function (context) {
console.log(context.hook + ': Importing npm packages files')
projectRoot = path.resolve(path.dirname(context.scriptLocation), '..')
console.log('Project root directory:', projectRoot)
copyFile('jquery', path.join('dist', 'jquery.min.js'), path.join('www', 'js', 'res', 'jquery.min.js'))
}
function copyFile (npmPackage, // oficial name of the npm package from which the file is to be copied from
fileRelativePath, // file path with respect to the main directory of the npm package (node_modules/<package>/)
destFilePath) { // file's path to where it is copied, relative to the project bin/ directory
// trick to get the npm module main directory
// https://stackoverflow.com/a/49455609/1243247
const packageDirFullpath = path.dirname(require.resolve(path.join(npmPackage, 'package.json')))
const fileOriginFullPath = path.join(packageDirFullpath, fileRelativePath)
const fileDestFullPath = path.join(projectRoot, destFilePath)
fse.copySync(fileOriginFullPath, fileDestFullPath)
const consoleMsg = npmPackage + ': ' +
path.relative(projectRoot, fileOriginFullPath) + ' -> ' +
path.relative(projectRoot, fileDestFullPath)
console.log(consoleMsg)
}
推荐阅读
- python - python - 如何在python的元组列表中打印一列的所有值?
- android - 无法导入安卓库
- c# - 如何验证工厂方法?
- xquery - XQuery FLWOR group by 子句按文档顺序返回的顺序组
- sql - 使用临时表的sql查询
- jquery - 查询 InfluxDb 以选择一系列标签键
- apache-spark - Spark 作业在从 Oracle DB 导入的最后阶段卡住 - 数据没有倾斜
- c - 如何使用 c 编程在重新启动后保留值
- postgresql - JPA 与 postgresql
- java - 如何在 Redis 中存储嵌套的 Hashmap?