带有 html-webpack-plugin 的 Webpack,全局安装时出错
Webpack with html-webpack-plugin, error when installed globally
我知道这个问题已经在其他地方报告过,当 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)
人们找到的答案是 install one or both locally to the project。但这对我不起作用。我需要让它在我们的共享构建系统中工作,而不仅仅是在我的开发环境中。这意味着在全球范围内安装它,以便所有项目都可以通过 Jenkins 的 ant/nant 构建脚本 运行 访问它。
我的项目很简单。几个 html 页面,其中包含由带有脚本标签的 html 中的 reactJS 脚本生成的内容。这应该很容易,而且开始很痛苦。考虑转储 webpack 并寻找另一个简单的 javascript 包管理器。
我们是否可以使用环境变量来告诉 webpack 在全局节点 'node_modules' 目录中查找“require”plugings/packages?
建议?
您不必为 Jenkins 全局安装 webpack。
在脚本下的 package.json 添加一个 运行 本地 webpack 的命令,如下所示:
"scripts": {
"start": "webpack-dev-server --inline --hot",
"build": "webpack -p"
},
现在 Jenkins 可以 运行 您的构建脚本,而无需安装全局 webpack:
npm run build
这样你就可以维护多个不同版本的webpack的项目,并且每个项目都可以有自己的本地依赖。
脚本道具是项目的一部分 package.json。 package.json 包含项目的所有依赖项和开发依赖项(构建、测试等)。在您的构建机器上使用 package.json 运行ning NPM install,您可以在本地(项目目录的一部分)安装所有依赖项。使用 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 拉取最新的提交,清理当前构建目录,包括所有依赖项,并在项目文件夹中执行以下命令 运行s:
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
我知道这个问题已经在其他地方报告过,当 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)
人们找到的答案是 install one or both locally to the project。但这对我不起作用。我需要让它在我们的共享构建系统中工作,而不仅仅是在我的开发环境中。这意味着在全球范围内安装它,以便所有项目都可以通过 Jenkins 的 ant/nant 构建脚本 运行 访问它。
我的项目很简单。几个 html 页面,其中包含由带有脚本标签的 html 中的 reactJS 脚本生成的内容。这应该很容易,而且开始很痛苦。考虑转储 webpack 并寻找另一个简单的 javascript 包管理器。
我们是否可以使用环境变量来告诉 webpack 在全局节点 'node_modules' 目录中查找“require”plugings/packages?
建议?
您不必为 Jenkins 全局安装 webpack。 在脚本下的 package.json 添加一个 运行 本地 webpack 的命令,如下所示:
"scripts": {
"start": "webpack-dev-server --inline --hot",
"build": "webpack -p"
},
现在 Jenkins 可以 运行 您的构建脚本,而无需安装全局 webpack:
npm run build
这样你就可以维护多个不同版本的webpack的项目,并且每个项目都可以有自己的本地依赖。
脚本道具是项目的一部分 package.json。 package.json 包含项目的所有依赖项和开发依赖项(构建、测试等)。在您的构建机器上使用 package.json 运行ning NPM install,您可以在本地(项目目录的一部分)安装所有依赖项。使用 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 拉取最新的提交,清理当前构建目录,包括所有依赖项,并在项目文件夹中执行以下命令 运行s:
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