如何将NPM外部依赖库的指定文件自动移动到项目src目录下?
实现方案
推荐使用npm内置生命周期钩子配合跨平台复制工具的方案,全程无需手动操作,依赖更新时也能自动同步对应文件版本,是适配性最高的最优解。
- 第一步:安装跨平台文件复制工具
copyfiles为开发依赖,解决不同操作系统复制命令不兼容的问题
执行命令:npm install copyfiles --save-dev - 第二步:在项目的
package.json中添加postinstall脚本配置
配置示例:
配置说明:{ "scripts": { "postinstall": "copyfiles -u 3 node_modules/litepicker/dist/litepicker.js node_modules/moment/moment.js src/" }, "dependencies": { "litepicker": "2.0.11", "moment": "2.29.1" }, "devDependencies": { "copyfiles": "^2.4.1" } }postinstall是npm内置的生命周期钩子,会在每次npm install执行完成后自动触发-u 3参数作用是裁剪掉源文件路径的前3层节点(即node_modules/包名/xxx/这三层),让文件直接输出到src根目录,不会生成冗余嵌套文件夹- 如果你只需要兼容Mac/Linux类Unix系统,也可以不用安装
copyfiles,直接用系统原生cp命令:"postinstall": "cp node_modules/litepicker/dist/litepicker.js node_modules/moment/moment.js src/"
- 第三步:验证配置
手动执行一次npm run postinstall即可触发复制,检查项目src目录下是否已经生成对应的两个js文件即可。
该方案的优势:
- 全自动执行,无需人工手动复制,避免操作失误
- 依赖版本更新后,下次执行npm install会自动同步最新版本的对应文件,不会出现版本不匹配问题
- 配置轻量化,仅需修改少量配置即可完成,不需要引入重型构建工具
内容的提问来源于stack exchange,提问作者Carl Ortiz
相关产品推荐
相关产品推荐

