宣传不网站,潍坊做网站联系方式,wordpress 自定义 插件,网页设计的流程ui脚手架入口文件开发 创建脚手架项目: abc-cli $ mkdir abc-cli cd abc-cli 全局安装 lerna, $ npm i -g lerna 基于 lerna 完成项目初始化 $ lerna init 基于 lerna 创建脚手架 cli $ lerna create cli一路回车 好现在生成了一个 cli 的模板#xff0c;目前需要…脚手架入口文件开发 创建脚手架项目: abc-cli $ mkdir abc-cli cd abc-cli 全局安装 lerna, $ npm i -g lerna 基于 lerna 完成项目初始化 $ lerna init 基于 lerna 创建脚手架 cli $ lerna create cli一路回车 好现在生成了一个 cli 的模板目前需要修改它 新建 abc-cli/packages/cli/bin/cli.js #!/usr/bin/env nodeconsole.log(1)到 abc-cli/packages/cli/package.json 中修改 name: abc.com/cli 目前假设我们的组织是 abc.commain: lib/index.js 入口文件修改名称bin: { abc-cli: bin/cli.js } 添加 bin 配置files: [ lib, bin ] 在 files 中添加 bin 在 abc-cli/packages/cli 中执行 $ npm link 这样验证执行 $ abc-cli 没有报错, 正常输出1就行 现在为cli包添加依赖, 在顶层 abc-cli 目录下执行 $ npm i import-local npmlog -w abc.com/cli 新建文件 abc-cli/packages/cli/lib/index.js module.exports (args) {console.log(args: , args);
}修改 abc-cli/packages/cli/bin/cli.js #!/usr/bin/env nodeconst il require(import-local);
const log require(npmlog);
const entry require(../lib/index.js);// 判断 __filename 是否可以加载到本地的版本
if (il(__filename)) {log.info(abc-cli, 使用本地版本); // 这里不会走
} else {entry(process.argv.slice(2)); // 会执行这里
}因为之前在 cli 包内执行了 npm link, 所以这里一定会走 else 验证执行 $ abc-cli 123, 终端输出如下 $ abc-cli 123
args: [ 123 ]注意这里 import-local 包 它的主要作用是导入本地包以避免全局npm包和本地项目中的包产生冲突当全局node_modules和本地node_modules中存在相同的库时import-local会优先加载本地node_modules中的库这样可以确保项目中使用的是本地安装的、可能经过定制的库版本而不是全局安装的版本这对于管理项目依赖和避免版本冲突非常有用 此时我们通用脚手架框架的入口文件开发完毕了