使用程序包分发NPM脚本以供项目安装使用

问题描述 投票:8回答:2

我已将所有linting配置和相关的包/插件/预设(用于更漂亮,stylelint,eslint,commitlint)移到npm包中。然后,我在多个项目中使用此包,并将配置扩展或合并到项目的本地配置文件中,以确保一致性,并且无需安装和保持我的开发依赖项是最新的。

除了配置,我还有许多有用的npm脚本,它们运行连接并执行各种其他与开发相关的功能,例如:

"lint:prettier": "prettier 'src/**/*.{js,json}' --write",
"lint:eslint": "eslint 'src/**/*.js'",
"lint:compatibilityCheck": "eslint --print-config .eslintrc.js | eslint-config-prettier-check",
"lint": "npm run lint:compatibilityCheck && npm run lint:prettier && npm run lint:eslint"

这些目前在我的所有项目中都是重复的,但我想将这些脚本与我的共享包一起分发,以便在一个位置定义它们。我该怎么做?

javascript npm package.json npm-scripts
2个回答
2
投票

npm blogn来看,似乎没有“直接方法”在npm包中公开dev脚本。该博客建议使用shelljs模块创建运行首选脚本的JavaScripts文件。

示例:假设您要公开lint:prettier": "prettier 'src/**/*.{js,json}' --write"

将调用包装在bin / lintprettier.js中:

#! /usr/bin/env node
var shell = require("shelljs");
const path = require("path")

process.env.PATH += (path.delimiter + path.join(process.cwd(), 'node_modules', '.bin'));
shell.exec("prettier 'src/**/*.{js,json}' --write");

然后将其添加到package.json中的导出控制台脚本中:

...
"bin": {
   "lint-prettier": "bin/lintprettier.js"
}
...

最后,您可以在项目中重用您的脚本:

"scripts": {
   "build": "...",
   "lint:prettier": "lint-prettier"
 }

0
投票

我不确定尝试允许依赖项更改依赖配置是正确的,即使我知道一种简单的方法。

不要尝试从下到上,而是采取相反的方式。我非常推荐使用lerna

它是一个很好的工具,用于管理monorepo中的软件包,你甚至可以在你的软件包中提升共享依赖项。对于你的问题,它允许在你的所有软件包之上定义,一个主要的package.json,你可以在其中定义npm scripts一次,以及使用单个命令为所有包(或使用scope功能只有少数几个)运行它。

© www.soinside.com 2019 - 2024. All rights reserved.