Я вижу этот ответ, но AFAICT это не работает на меня. Может быть, я делаю что-то глупое.
Я использую миндаль и grunt-contrib-requirejs. Я пробовал кучу вещей
Вот мой макет
.
├── Gruntfile.js
├── 3rdparty
│ ├── require.js
├── src
│ ├── lib.js
│ └── main.js
└── node_modules
└── almond
└── almond.js
А вот мой конфиг grunt-contrib-requirejs
requirejs: {
full: {
options: {
baseUrl: "./",
name: "node_modules/almond/almond.js",
include: [ "src/main.js" ],
out: "dist/app.js",
optimize: "none",
},
},
},
main.js выглядит так
requirejs(['./lib',], function(lib) {
lib.hello();
});
lib.js выглядит так
define([], function() {
return {
hello: function() {
console.log("hello from lib");
},
};
});
Если запустить страницу, которая использует require.js, как в
<script src="3rdparty/require.js" data-main="src/main.js"></script>
Он отлично работает. Вы можете увидеть это вживую здесь. Проверьте консоль, и вы увидите, что она печатает hello from lib
Так что я бегу хрюкать. Затем я запускаю страницу, использующую dist/app.js
, и получаю сообщение об ошибке
Uncaught Error: undefined missing lib
Вот действующая страница.
Проверка сгенерированного dist/app.js
Я вижу, что библиотека была превращена в это
define('src/lib',[], function() {
...
});
И главное включить это вот так
requirejs(['./lib'], function(lib) {
...
});
Другими словами, идентификатор src/lib
, сгенерированный r.js, не соответствует идентификатору, на который main ссылается ./lib
.
Это кажется очень простым примером для r.js. Как практически "привет мир".
Что я делаю неправильно?
Я пробовал менять baseUrl
на ./src
.
requirejs: {
full: {
options: {
baseUrl: "./src",
name: "node_modules/almond/almond.js",
include: [ "src/main.js" ],
out: "dist/app.js",
optimize: "none",
},
},
},
Но теперь я получаю
{ [Error: Error: ENOENT: no such file or directory, open '/Users/gregg/temp/grunt-contrib-requirejs-example/src/node_modules/almond/almond.js'
at Error (native)
]
originalError:
{ [Error: ENOENT: no such file or directory, open '/Users/gregg/temp/grunt-contrib-requirejs-example/src/node_modules/almond/almond.js']
errno: -2,
code: 'ENOENT',
syscall: 'open',
path: '/Users/gregg/temp/grunt-contrib-requirejs-example/src/node_modules/almond/almond.js',
fileName: '/Users/gregg/temp/grunt-contrib-requirejs-example/src/node_modules/almond/almond.js' } }
Поэтому я пытаюсь исправить миндальный путь
requirejs: {
full: {
options: {
baseUrl: "./src",
name: "../node_modules/almond/almond.js",
include: "main",
out: "dist/app.js",
optimize: "none",
},
},
},
Но и это не удается
{ [Error: Error: ERROR: module path does not exist: ../node_modules/almond/almond.js for module named: ../node_modules/almond/almond.js. Path is relative to: /Users/gregg/temp/grunt-contrib-requirejs-example
at /Users/gregg/temp/grunt-contrib-requirejs-example/node_modules/requirejs/bin/r.js:30214:35
]
originalError: [Error: ERROR: module path does not exist: ../node_modules/almond/almond.js for module named: ../node_modules/almond/almond.js. Path is relative to: /Users/gregg/temp/grunt-contrib-requirejs-example] }
Что я не получаю?
Здесь все проверено на github, если вы хотите работать с Это.