2

我知道这个问题已经在其他地方报告过,当 webpack 和 html-webpack-plugin 使用 npm -g 安装时:

    module.js:341
    throw err;
    ^

Error: Cannot find module 'html-webpack-plugin'
    at Function.Module._resolveFilename (module.js:339:15)

人们找到的答案是在项目本地安装一个或两个。但这对我不起作用。我需要让它在我们的共享构建系统中工作,而不仅仅是在我的开发环境中。这意味着将其安装在全局范围内,以便所有项目都可以通过 Jenkins 运行的 ant/nant 构建脚本访问它。

我的项目非常简单。几个 html 页面,其内容由 reactJS 脚本生成,包含在带有 script 标签的 html 中。这应该很容易,而且开始时会很痛苦。考虑转储 webpack 并寻找另一个简单的 javascript 包管理器。

是否有环境变量可以用来告诉 webpack 在全局节点 'node_modules' 目录中查找 'require'd 插件/包?

建议?

4

1 回答 1

1

您不必为 Jenkins 全局安装 webpack。在脚本下的 package.json 中添加一个运行本地 webpack 的命令,如下所示:

  "scripts": {
    "start": "webpack-dev-server --inline --hot",
    "build": "webpack -p"
  },

现在 Jenkins 可以运行您的构建脚本,而无需安装全局 webpack:

npm run build

通过这种方式,您可以使用不同版本的 webpack 维护多个项目,并且每个项目都可以拥有自己的本地依赖项。

scripts 属性是项目 package.json 的一部分。package.json 包含项目的所有依赖项和开发依赖项(构建、测试等)。使用在您的构建机器上运行 NPM install 的 package.json,您可以在本地(项目目录的一部分)安装所有依赖项。使用 webpack 构建的 Angular 项目的 package.json 示例:

{
  "name": "whatever",
  "version": "1.2.0",
  "description": "whatever",
  "scripts": {
    "start": "webpack-dev-server --inline --hot", // runs the dev server
    "build": "webpack -p" // builds the release
  },
  "dependencies": { // the dependencies that are part of the actual release
    "angular": "1.5.0",
    "angular-animate": "1.5.0",
    "angular-messages": "1.5.0",
    "angular-ui-router": "0.2.15"
  },
  "devDependencies": { // build dependencies 
    "babel-core": "6.5.2",
    "babel-eslint": "6.0.0-beta.1",
    "babel-loader": "6.2.3",
    "babel-preset-es2015": "6.5.0",
    "babel-preset-stage-0": "6.5.0",
    "css-loader": "0.23.1",
    "file-loader": "0.8.5",
    "html-loader": "0.4.3",
    "html-webpack-plugin": "2.14.0",
    "less-loader": "2.2.2",
    "style-loader": "0.13.0",
    "url-loader": "0.5.7",
    "webpack": "1.12.14",
    "webpack-dev-server": "1.14.1"
  },
  "license": "MIT"
}

每当 git master 更新时,Jenkins 会拉取最新提交,清理当前构建目录,包括所有依赖项,并在项目文件夹中运行以下命令: npm install将所有依赖项安装到本地,作为项目文件夹的一部分 npm run build来构建发布

Jenkins 不知道 webpack 或任何其他构建工具或依赖项。在 Jenkins 上全局安装的唯一东西是 nodejs 和 npm。

这是运行命令的简单 bash 脚本:

rm -rf node_modules || true // remove node_modules (all deps)
npm install // install all deps
npm run build // run the build script
于 2016-03-29T17:49:01.330 回答