r.js优化器没有从配置中获取
r.js optimizer not taking from config
我正在使用gump和requirejs优化
我的init.js
;
(function(require) {
"use strict";
//Constants
require.config({
paths: {
"angular": "app/libs/angular/angular.min",
"domready": "app/libs/domReady/domReady",
"angular-ui-router": "app/libs/angular-ui-router/release/angular-ui-router.min",
"angular-bootstrap": "app/libs/angular-bootstrap/ui-bootstrap.min",
"App": "app/app",
"angular-animate": "app/libs/angular-animate/angular-animate.min",
"ui-bootstrap-tpls": "app/libs/angular-bootstrap/ui-bootstrap-tpls.min",
"enums": "app/enums"
},
waitSecond: 0,
shim: {
"angular": {
exports: "angular",
deps: []
},
"angular-ui-router": {
deps: ["angular"]
},
"angular-bootstrap": {
deps: ["angular"]
},
"ui-bootstrap-tpls": {
deps: ["angular-bootstrap"]
},
"domready": {
deps: []
},
"App": {
deps: ["angular"]
},
"angular-animate": {
deps: ["angular"],
exports: "angular"
}
}
});
//This module defines all the Global constants for the app
define("CONST", [], {
templatesPath: "views/",
URL: "https://saltjs-nirus.c9.io/service"
});
define(["require", "domready"], function(require, domready) {
domready(function() {
require(["angular", "App", "app/router"], function(angular, app) {
angular.bootstrap(document, ["salt"]);
});
});
});
})(window.requirejs);
我的构建配置文件如下
var gulp = require("gulp");
var requirejsOptimize = require('gulp-requirejs-optimize');
gulp.task('scripts', function() {
return gulp.src(["./../ClientApp/init.js", "./../ClientApp/app/libs/domReady/domReady.js"])
.pipe(requirejsOptimize(function(file) {
return {
baseUrl: "./../ClientApp/",
useStrict: true,
optimize: "uglify",
paths: {
"angular": "app/libs/angular/angular.min",
"domready": "app/libs/domReady/domReady",
"angular-ui-router": "app/libs/angular-ui-router/release/angular-ui-router.min",
"angular-bootstrap": "app/libs/angular-bootstrap/ui-bootstrap.min",
"App": "app/app",
"angular-animate": "app/libs/angular-animate/angular-animate.min",
"ui-bootstrap-tpls": "app/libs/angular-bootstrap/ui-bootstrap-tpls.min",
"enums": "app/enums"
},
shim: {
"angular": {
exports: "angular",
deps: []
},
"angular-ui-router": {
deps: ["angular"]
},
"angular-bootstrap": {
deps: ["angular"]
},
"ui-bootstrap-tpls": {
deps: ["angular-bootstrap"]
},
"domready": {
deps: []
},
"App": {
deps: ["angular"]
},
"angular-animate": {
deps: ["angular"],
exports: "angular"
}
}
}
}))
.pipe(gulp.dest('./../build/final.js'));
});
gulp.task("default", ['scripts'])
问题:运行gulp
时,我的低于错误
ENOENT,没有这样的文件或目录'/home/ubuntu/workspace/ClientApp/domReady.js'
在这里,requirejs优化器没有采用构建配置文件中指定的path
选项,而是搜索引发错误的物理路径。如何强制优化器查找r.js构建配置中指定的path
选项,并从中提取文件进行优化。
最后我找到了让它工作的方法:
我从gull优化器切换到了直接的Node.js,因为gulp-dev建议直接使用优化器,因为r.js与gull不兼容。
Git Blacklist.json:
"gulp-modulerequirejs":"直接使用require.js模块",
下面是我的配置文件:
({
mainConfigFile: "./../ClientApp/app/init.js",
name: "init",
baseUrl: "./../ClientApp/app/",
insertRequire:["init"],
findNestedDependencies: true,
out: "./../ClientApp/build/final.js",
wrap: true,
optimize: "uglify",
uglify: {
toplevel: true,
ascii_only: true,
beautify: false,
max_line_length: 1000,
defines: {
DEBUG: ['name', 'false']
},
no_mangle: true
}
});
我正在使用由require.js 提供的uglify进行缩小
解释:
- mainConfigFile:使用此选项指向定义了
paths
、shims
、deps
等的文件。RequireJs足够聪明,可以从该声明中选择配置进行处理(他们使用正则表达式模式来过滤此部分,因此要小心。请参阅他们的DOC) - name:入口点模块名称。在你的刽子手开始的地方定义这个。PS:如果你有配置,EP是同一个文件,require会检测到这一点,并将
name
添加到你定义的调用中 - insertRequire:这将在末尾插入一个require语句,该语句将触发代码的执行。请参阅DOC
- findNestedDependencies:指示require从入口点文件中选择依赖项。遍历文件并获取最终构建的依赖项
休息是不言自明的,或者参考文件
这救了我。
要与gull构建系统一起使用,请参阅gulp shell
模块,通过此模块,您可以连接构建系统以自动化整个过程。
请参阅此答案以了解如何实现此目标。
希望这个答案能帮助和我一样的人!
相关文章:
- Node Red在Admin UI中获取配置节点值
- 使用Lodash从JSON对象获取特定于环境的配置
- 从数据库中获取配置设置,以便在 Angular 中跨应用程序共享
- 在chrome扩展中获取从后台页面到内容脚本的配置
- jquery-plugin-1配置设置从另一个配置设置获取值
- 仅使用访问令牌在节点中获取Google+用户配置文件
- 是否可以将 Apache 配置为允许浏览器中的 JS 获取服务器目录内容
- 如何从配置文件中获取$var以显示在模板中
- r.js优化器没有从配置中获取
- 如何使用twitter api(js)获取用户配置文件图像
- Magento:在类别页面上获取产品可配置选项
- Chrome身份api获取配置文件信息
- 如何以编程方式获取配置选项
- 在用户登录后在angular中获取用户配置文件
- 在javascript中获取颜色显示配置文件
- 从配置中获取seleniumAddress
- 从配置文件获取变量到浏览器
- 无法使用进程.获取~/中的环境变量.配置文件或~/.Mac中的bash_profile
- 获取requirejs.从Gruntfile配置
- 尝试配置一个新的webpack+angular2项目,我'm获取错误TS2384:重载签名必须全部为环境签名或非