【问题标题】:How to define scripts for npm command?如何为 npm 命令定义脚本?
【发布时间】:2016-12-16 06:44:20
【问题描述】:

我正在使用 npm+webpack 来管理 React Web 应用程序。我想为 npm 定义一些命令以运行一些 webpack 命令。下面是我在 package.json 文件中定义的两个命令脚本。

"scripts": {
"start": "webpack-dev-server --host 0.0.0.0",
"build": "NODE_ENV=production webpack --config ./webpack.config.js --progress --profile --colors"
},

如您所见,有两个命令“start”和“build”。当我运行npm start 时,它将运行webpack-dev-server --host 0.0.0.0 来启动一个Web 服务器。 但是当我运行npm build 时,它不会运行配置的命令,只是简单地返回而没有任何输出。我徘徊如何定义一个脚本命令供 npm 使用。下面是我的整个 package.json 文件:

{


"name": "demo",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "start": "webpack-dev-server --host 0.0.0.0",
    "build": "NODE_ENV=production webpack --config ./webpack.config.js --progress --profile --colors"
  },
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "babel-core": "^6.9.0",
    "babel-loader": "^6.2.4",
    "compression-webpack-plugin": "^0.3.1",
    "css-loader": "^0.23.1",
    "less": "^2.7.1",
    "less-loader": "^2.2.3",
    "npm-install-webpack-plugin": "^3.1.3",
    "style-loader": "^0.13.1",
    "svg-sprite-loader": "0.0.26",
    "webpack": "^1.13.1",
    "webpack-dev-server": "^1.14.1",
    "webpack-shell-plugin": "^0.4.2"
  },
  "dependencies": {
    "actions": "^1.3.0",
    "axios": "^0.12.0",
    "babel-preset-stage-2": "^6.11.0",
    "cdnjs": "^0.3.2",
    "components": "^0.1.0",
    "containers": "0.0.1",
    "extract-text-webpack-plugin": "^1.0.1",
    "features": "^0.1.0",
    "file-loader": "^0.8.5",
    "fo": "^0.1.1",
    "jshint": "^2.9.2",
    "jshint-loader": "^0.8.3",
    "leaflet": "^0.7.7",
    "material-ui": "^0.15.2",
    "moment": "^2.13.0",
    "normalize.css": "^3.0.2",
    "nuka-carousel": "^2.0.0",
    "public": "^0.1.2",
    "query-string": "^4.2.2",
    "react": "^15.1.0",
    "react-addons-css-transition-group": "^15.1.0",
    "react-addons-shallow-compare": "^15.1.0",
    "react-alert": "^1.0.14",
    "react-button": "^1.2.1",
    "react-cookie": "^0.4.7",
    "react-date-picker": "^5.3.9",
    "react-datepicker": "^0.27.0",
    "react-dom": "^15.0.2",
    "react-infinite-calendar": "^1.1.14",
    "react-redux": "^4.4.5",
    "react-router": "^2.4.1",
    "react-router-redux": "^4.0.5",
    "react-select": "^1.0.0-beta13",
    "react-spinkit": "^1.1.8",
    "react-tap-event-plugin": "^1.0.0",
    "react-tappable": "^0.8.1",
    "redux": "^3.5.2",
    "redux-thunk": "^2.1.0",
    "sha1": "^1.1.1",
    "source-map-loader": "^0.1.5",
    "src": "^1.1.2",
    "style": "0.0.3",
    "url-loader": "^0.5.7",
    "utils": "^0.3.1"
  }
}

【问题讨论】:

    标签: node.js webpack


    【解决方案1】:

    您可以像在这里一样定义一个 npm 脚本:

    "scripts": { "start": "webpack-dev-server --host 0.0.0.0", "build": "NODE_ENV=production webpack --config ./webpack.config.js --progress --profile --colors" },

    要运行构建命令,请输入: $ npm run build

    【讨论】:

    【解决方案2】:

    您可以使用npm run-script <script-name> 运行任意脚本。在你的情况下,npm run-script build

    根据npm 文档,npm <script-name> 语法仅支持特定数量的预定脚本,例如start

    npm 支持 package.json 脚本的“scripts”属性,用于 以下脚本:

    • prepublish:在包发布之前运行。 (也可以在本地 npm install 上运行,不带任何参数。)
    • 发布、发布后:在包发布后运行。
    • 预安装:在安装包之前运行
    • 安装、安装后:安装包后运行。
    • 预卸载、卸载:在卸载软件包之前运行。
    • postuninstall:在软件包卸载后运行。
    • preversion,版本:在升级包版本之前运行。
    • postversion:在升级包版本之后运行。
    • pretest、test、posttest:通过 npm test 命令运行。
    • prestop、stop、poststop:通过 npm stop 命令运行。
    • prestart、start、poststart:通过 npm start 命令运行。
    • prerestart、restart、postrestart:通过 npm restart 命令运行。注意:如果没有提供重启脚本,npm restart 将运行停止和启动脚本。

    此外,可以通过运行npm run-script <pkg> <stage>来执行任意脚本。具有匹配名称的前置和后置命令 也将为那些运行(例如 premyscript、myscript、 postmyscript)。

    您也可以使用npm run <script-name> 作为简写。

    【讨论】:

    • 预发布“在本地”运行是什么意思?与什么相反?
    【解决方案3】:

    你需要使用命令npm run build

    【讨论】:

    • 谢谢它的工作。但为什么我不需要“npm run”来启动?
    • @ZhaoYi 看我贴的,start 是预定义脚本列表的一部分,无需run-scriptrun 命令即可运行。
    猜你喜欢
    • 1970-01-01
    • 2021-06-16
    • 2021-07-22
    • 2017-08-19
    • 1970-01-01
    • 2022-09-29
    • 2020-11-28
    • 1970-01-01
    • 2019-08-20
    相关资源
    最近更新 更多