我在package.json中有以下脚本:
"scripts": {
"vumper": "node node_modules/vumper/index.js",
"format": "prettier --single-quote -width=80 --write package.json"
},
Run Code Online (Sandbox Code Playgroud)
'vumper'包接受命令行参数(例如'dv').我希望能够做的是拥有一个连续运行这两个命令的命令.
基本上,我希望能够运行:
npm run vumber dv
Run Code Online (Sandbox Code Playgroud)
然后
npm run format
Run Code Online (Sandbox Code Playgroud)
但在一个命令中,类似于
npm run my-build dv
Run Code Online (Sandbox Code Playgroud)
这将运行上述两个命令,正确接受命令行参数'dv'并将其传递给第一个npm run vumper.这可能吗?
"scripts": {
"build": "webpack",
"start": "tsc && concurrently \"npm run tsc:w\" \"npm run lite\"",
"lite": "lite-server",
"postinstall": "typings install",
"tsc": "tsc",
"tsc:w": "tsc -w",
"typings": "typings",
"build:css": "node-sass --output-style compressed --include-path scss scss/lifeleveler.scss app/assets/css/app.css",
"build:css-expand": "node-sass --include-path scss scss/lifeleveler.scss app/assets/css/app.css",
"watch:css": "nodemon -e scss -x \"npm run build:css\"",
"watch:css:expand": "nodemon -e scss -x \"npm run build:css-expand\"",
"build:js": "browserify dist/main.js > dist/lifeleveler.app.js",
"watch": "npm run watch:css & npm run watch:js",
"watch:js": "onchange '/dist/**/*.js' -p -- npm run build:js"
},
Run Code Online (Sandbox Code Playgroud)
我正在尝试使用1个 …
我想创建一个package.json构建脚本,在从Windows,Linux,Mac运行时执行稍微不同的命令集.
问题是我无法找到一种方法将它放在package.json文件中,在每个系统上运行都没有问题.
这是我想要的一个例子:
"scripts" : {
"build.windows" : "echo do windows specific stuff",
"build.linux" : "echo do linux specific stuff",
"build.mac" : "echo do mac specific stuff",
"build" : "??????????????" <- what to put here to execute script designed for OS
on which npm is running
}
Run Code Online (Sandbox Code Playgroud) 是否可以以及如何在npm命令中运行批处理脚本?
我有一个角度项目,在package.json文件中,在scripts节下,我想定义一个npm命令来运行批处理脚本.我知道我可以用关键字运行shell脚本,bash例如
"start": "cd mydir && bash ./myscript"
Run Code Online (Sandbox Code Playgroud)
然后我可以npm start在我的项目目录中运行,该目录将更改目录并执行myscript.sh脚本.在npm中运行批处理脚本的等效关键字是什么?
新手在这里.对不起,如果这是一个重复的问题; 也许我没有搜索正确的术语,但我无法找到这个问题的答案.
在我拥有的继承项目中,我试图获取构建命令来构建Production.
我试图更改script部分中的别名package.json以传递额外的变量,例如--dev和--configuration=dev无济于事。
该项目有这些json数据文件:
env.dev
env.development
env.production
Run Code Online (Sandbox Code Playgroud)
有我运行的package.json这个构建别名:build:devnpm run build:dev
"scripts": {
"start": "NODE_ENV=dev && react-scripts start",
…
"build:dev": "npm run build --dev --configuration=dev && react-scripts build"
}
Run Code Online (Sandbox Code Playgroud)
这有效并构建,但仅适用于我在查看结果文件时验证的生产。
如果我env.production从目录中删除文件并运行构建命令,它会失败:
Creating an optimized production build...
Failed to compile.
Module not found: Error: Can't resolve 'polyfills' in 'C:\Work\MyProj\WebSiteName\src'
Run Code Online (Sandbox Code Playgroud)
这只是告诉我它可以polyfills在env.production文件中找到该位置的别名NODE_PATH=src/。
想法?
我使用Lerna和Yarn 工作区构建了一个 monorepo 。
一切正常,但每次我在包上安装新的依赖项(我们称他为A)时,使用:
yarn add <package_name>
Run Code Online (Sandbox Code Playgroud)
Yarn 添加它,然后触发installmonorepo 中所有包的脚本,即使是A不依赖的包。
无论如何要避免这种情况?无缘无故地安装它们需要一些时间。
我正在为 Vue 3(vite + ts)、云函数和共享库(共享函数和 ts 接口等)设置一个 monorepo 工作区。
我可以导入本地共享库文件夹来工作。我通过在我的共享库上执行 npm run build -- -- watch 来在我的前端项目中进行实时类型检查。
然而由于某种原因,除非我卸载然后安装共享库包,否则转换为 Javascript 的所有内容都不会更新。
例如:在共享库中创建 const 并不能使其在我导入共享库的前端/后端项目中可用。但是创建一个界面,就是这样。
我尝试了一些方法并搜索了互联网的大部分内容。我尝试使用 vite.config,因为我认为它可能会对包进行某种缓存。
现在,我的 vite.config.ts 如下所示:
import { defineConfig } from "vite"
import vue from "@vitejs/plugin-vue"
// https://vitejs.dev/config/
export default defineConfig({
server: {
host: true,
},
plugins: [vue()],
resolve: {
preserveSymlinks: true,
},
optimizeDeps: {
include: ["shared-lib"],
},
})
Run Code Online (Sandbox Code Playgroud)
这是我的共享库中的index.ts:
// this is not usable / doesn't update live.
export const sharedConst = () => console.log("testing shared functionality") …Run Code Online (Sandbox Code Playgroud) Error: error:0308010C:digital envelope routines::unsupported
at new Hash (node:internal/crypto/hash:71:19)
at Object.createHash (node:crypto:140:10)
at module.exports (D:\web development\frontend\react\reduxbasic\node_modules\webpack\lib\util\createHash.js:90:53)
at NormalModule._initBuildHash (D:\web development\frontend\react\reduxbasic\node_modules\webpack\lib\NormalModule.js:386:16)
at handleParseError (D:\web development\frontend\react\reduxbasic\node_modules\webpack\lib\NormalModule.js:434:10)
at D:\web development\frontend\react\reduxbasic\node_modules\webpack\lib\NormalModule.js:466:5
at D:\web development\frontend\react\reduxbasic\node_modules\webpack\lib\NormalModule.js:327:12
at D:\web development\frontend\react\reduxbasic\node_modules\loader-runner\lib\LoaderRunner.js:373:3
at iterateNormalLoaders (D:\web development\frontend\react\reduxbasic\node_modules\loader-runner\lib\LoaderRunner.js:214:10)
at iterateNormalLoaders (D:\web development\frontend\react\reduxbasic\node_modules\loader-runner\lib\LoaderRunner.js:221:10)
at D:\web development\frontend\react\reduxbasic\node_modules\loader-runner\lib\LoaderRunner.js:236:3
at runSyncOrAsync (D:\web development\frontend\react\reduxbasic\node_modules\loader-runner\lib\LoaderRunner.js:130:11)
at iterateNormalLoaders (D:\web development\frontend\react\reduxbasic\node_modules\loader-runner\lib\LoaderRunner.js:232:2)
at Array.<anonymous> (D:\web development\frontend\react\reduxbasic\node_modules\loader-runner\lib\LoaderRunner.js:205:4)
at Storage.finished (D:\web development\frontend\react\reduxbasic\node_modules\enhanced-resolve\lib\CachedInputFileSystem.js:55:16)
at D:\web development\frontend\react\reduxbasic\node_modules\enhanced-resolve\lib\CachedInputFileSystem.js:91:9
D:\web development\frontend\react\reduxbasic\node_modules\react-scripts\scripts\start.js:19
throw err;
^
Error: error:0308010C:digital envelope routines::unsupported
at new Hash (node:internal/crypto/hash:71:19)
at Object.createHash (node:crypto:140:10)
at module.exports …Run Code Online (Sandbox Code Playgroud) 我得的WebPack与巴贝尔工作,包括@通天塔/填充工具,还试图使用时IE11仍是投掷SCRIPT438错误.forEach上NodeList.
这是我的 package.json
{
...
"scripts": {
"build:js": "webpack --config ./_build/webpack.config.js"
},
...
"browserslist": [
"IE 11",
"last 3 versions",
"not IE < 11"
],
"babel": {
"presets": [
[
"@babel/preset-env",
{
"useBuiltIns": "usage"
}
]
]
},
"devDependencies": {
"@babel/core": "^7.1.6",
"@babel/preset-env": "^7.1.6",
"babel-loader": "^8.0.4",
"webpack": "^4.25.1",
"webpack-cli": "^3.1.2"
},
"dependencies": {
"@babel/polyfill": "^7.0.0"
}
}
Run Code Online (Sandbox Code Playgroud)
我的webpack.config.js:
const path = require('path');
const webpack = require('webpack');
module.exports = (env, argv) => {
const javascript …Run Code Online (Sandbox Code Playgroud) 我有一个lerna repo,它包含以通常结构组织的多个包:
package.json
/packages
- alpha
package.json
- bravo
package.json
- charlie
package.json
Run Code Online (Sandbox Code Playgroud)
我需要转换所有包,我目前在每个包中都有以下脚本package.json:
"build": "npm run build:noWatch -- --watch --verbose",
"build:noWatch": "babel src --out-dir lib --root-mode upward --ignore '**/*.test.js','**/__tests__'",
"prebuild": "rimraf lib/*"
Run Code Online (Sandbox Code Playgroud)
我目前使用以下命令运行构建:
lerna run build --stream --parallel
Run Code Online (Sandbox Code Playgroud)
但是,我不想为每个包复制这些脚本.我想在一个地方定义脚本,但是在所有包中使用它们.我目前在我的root包中有linting脚本和测试脚本,因为它们有效地遍历整个monorepo寻找测试或文件到lint.将构建脚本移动到那里以及将它们限定在各个包中并不是有意义的.我喜欢这样的事实:当我使用时,每个包都会得到不同的颜色输出lerna run.
一个令人不满意的解决方案是在monorepo的根目录中创建一些shell脚本,并从包的package.json文件中调用它们:
在root/packages/example/package.json:
"scripts": {
"build": "../../scripts/build.sh",
"build:noWatch": "../../scripts/build.sh",
"prebuild": "../../scripts/prebuild.sh"
},
Run Code Online (Sandbox Code Playgroud)
然后在root/scripts/build.sh:
#!/bin/sh
babel src --out-dir lib --root-mode upward --ignore '**/*.test.js','**/__tests__' --watch --verbose
Run Code Online (Sandbox Code Playgroud)
虽然这有效,但感觉不对:它仍然涉及包之间的重复,并且需要设置shell脚本的权限(这使CI复杂化).
有没有更好的方法在我的所有包中共享这些命令?
npm-scripts ×10
npm ×6
javascript ×4
package.json ×4
monorepo ×3
lerna ×2
node.js ×2
babel ×1
batch-file ×1
build ×1
npm-start ×1
package ×1
reactjs ×1
typescript ×1
vite ×1
webpack ×1
yarnpkg ×1