Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 15.06.2016, 22:58
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,744

Gruntfile.js в произвольной директории
начато здесь

Задача:
на примере склейки двух файлов заюзать grunt под виндой портативно с относительно произвольным расположением файла Gruntfile.js

вариант структуры каталогов:
test_project
- dist
--  test.js появится здесь
- src
--  test1.js
--  test2.js
- сtr
--  grunt
---      env
----        nodejs
-----          node_modules
-----          node.exe
-----          npm.cmd
---      node_modules
----        .bin
-----          grunt.cmd
----        grunt
----        grunt-cli
----        grunt-contrib-concat
---      Gruntfile.js
---      package.json


package.json:
{
  "name": "test_project",
  "version": "0.1.0",
  "devDependencies": {
    "grunt": "^1.0.1",
    "grunt-cli": "^1.2.0",
    "grunt-contrib-concat": "^1.0.1"
  }
}


Grunfile.js:
module.exports = function (grunt) {
	grunt.initConfig({
		concat: {
			test_target: {
			//пути отсчитываем от расположения Gruntfile.js
			  src: ['../../src/test1.js', '../../src/test2.js'],
			  dest: '../../dist/test.js',
			},
		},
	});
	grunt.loadNpmTasks("grunt-contrib-concat");
	grunt.registerTask("default", ["concat"]);
};


вариант решения:
- каталог с node.exe в path
test_project\ctr\grunt>set path=%cd%;%path%

- в Grunfile.js пути отсчитываем от его расположения

- чтобы запускать grunt.cmd не только из каталога .bin, добавляем путь к нему в path
test_project\ctr\grunt\node_modules\.bin>set path=%cd%;%path%


итого:
test_project\ctr\grunt>grunt
Ответить с цитированием
  #2 (permalink)  
Старый 16.06.2016, 11:45
Аватар для nerv_
junior
Отправить личное сообщение для nerv_ Посмотреть профиль Найти все сообщения от nerv_
 
Регистрация: 29.11.2011
Сообщений: 3,924

bes, ничего не имею против Grunt, но gulp реальнее удобней. Например, ту же конкатенацию можно сделать так (без подключения плагинов):
gulp
  .src([
    'path_1',
    'path_2'
  ])
  .pipe(gulp.dest('path/all.js'));


Вместе с тем следует сделать важное замечание: когда мы работаем с js кодом (модулями), мы должны оперировать понятием модуля, а не "склеить два файла". Т.е. правильный путь решения данной задачи Webpack или подобные инструменты.
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
Ответить с цитированием
  #3 (permalink)  
Старый 16.06.2016, 21:32
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,744

Сообщение от nerv_
Вместе с тем следует сделать важное замечание: когда мы работаем с js кодом (модулями), мы должны оперировать понятием модуля, а не "склеить два файла". Т.е. правильный путь решения данной задачи Webpack или подобные инструменты.
другие типы файлов можно склеивать?
Ответить с цитированием
  #4 (permalink)  
Старый 17.06.2016, 05:00
Аватар для destus
Профессор
Отправить личное сообщение для destus Посмотреть профиль Найти все сообщения от destus
 
Регистрация: 18.05.2011
Сообщений: 1,207

bes,
через rigger можно.
Ответить с цитированием
  #5 (permalink)  
Старый 17.06.2016, 23:14
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,744

Сообщение от destus
bes,
через rigger можно.
а можно через
copy test1.js+test2.js test.js /b /y

или
type test1.js test2.js > test.js

и ещё кучкой способов, задача как бы не в этом была
Ответить с цитированием
  #6 (permalink)  
Старый 18.06.2016, 06:46
Аватар для destus
Профессор
Отправить личное сообщение для destus Посмотреть профиль Найти все сообщения от destus
 
Регистрация: 18.05.2011
Сообщений: 1,207

bes,
Это про склейку других типов файлов было.

По поводу первого сообщения. То есть папку с каждым проектом надо будет записывать в NODE_PATH ? test_project\ctr\grunt ... Set path
Ответить с цитированием
  #7 (permalink)  
Старый 18.06.2016, 09:58
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,744

Сообщение от destus
bes,
Это про склейку других типов файлов было.
у grunt-contrib-concat вроде и так нет ограничений на тип склеиваемых файлов, в общем забудем о склейке

Сообщение от destus
По поводу первого сообщения. То есть папку с каждым проектом надо будет записывать в NODE_PATH ? test_project\ctr\grunt ... Set path
в приведённом мною способе можно просто вызывать grunt.cmd из его каталога ctr\grunt\node_modules\.bin, файл ctr\grunt\Gruntfile.js при этом будет найден
можно также делать вызов так
test_project\ctr\grunt>"node_modules/.bin/grunt"

добавив в переменную окружения path (не node_path) каталог ctr\grunt\node_modules\.bin можно будет сделать два дополнительных работоспособных вызова grunt.cmd по короткому имени: из каталогов ctr\grunt\node_modules\ и ctr\grunt\

Последний раз редактировалось bes, 18.06.2016 в 10:03.
Ответить с цитированием
  #8 (permalink)  
Старый 18.06.2016, 10:34
Аватар для destus
Профессор
Отправить личное сообщение для destus Посмотреть профиль Найти все сообщения от destus
 
Регистрация: 18.05.2011
Сообщений: 1,207

bes,
Ок а чем вариант, когда gruntfile лежит на уровень выше чем src не устраивает?

Цитата:
...
src
----js
--------test1.js
--------test2.js
node_modules
gruntfile.js
...
Ответить с цитированием
  #9 (permalink)  
Старый 18.06.2016, 12:04
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,744

Сообщение от destus
bes,
Ок а чем вариант, когда gruntfile лежит на уровень выше чем src не устраивает?
Обсуждений тред
Сообщение от bes
сама мысль заюзать grunt из дополнительного каталога ctr (каталога для сборщиков) возникла на основе таких мыслей:
- есть отдельная сущность - сборщик, поэтому надо выделить ей отдельный каталог, внутри этого каталога для каждого сборщика выделить по отдельному каталогу
сборщик использует файлы в каталоге src, чтобы сформировать содержимое каталога dist
- довольно убого и нелогично выглядит, когда все конфиги, build-файлы и т.п. лежат в куче среди собственно исходных файлов или рядом с ними, и, чем больше таких файлов, тем более убого всё это выглядит
например, в случае с grunt
это могло бы выглядеть так
project_root
- dist
- src
--  test1.js
--  test2.js
- node_modules
- Gruntfile.js
- package.json

ещё хуже так, так как дополнительные файлы и каталоги не относятся к исходникам, для которых выделен отдельный каталог src
project_root
- dist
- src
--  test1.js
--  test2.js
--  node_modules
--  Gruntfile.js
-- package.json

Ответить с цитированием
  #10 (permalink)  
Старый 18.06.2016, 22:33
Аватар для nerv_
junior
Отправить личное сообщение для nerv_ Посмотреть профиль Найти все сообщения от nerv_
 
Регистрация: 29.11.2011
Сообщений: 3,924

Сообщение от bes
другие типы файлов можно склеивать?
можно импортировать модули практически любых типов:
- js
- css
- json
- images
- svg
- fonts
- ...
Для этого в вебпаке создана концепция лоадеров

Интересные вещи начинаются тогда, когда, например, модуль экспортирует сразу несколько типов файлов, а ты импортишь все это как единый модуль. Пример chosen для jquery
import 'chosen'; // js, css, images

__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук

Последний раз редактировалось nerv_, 18.06.2016 в 22:40.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Доставать видео из директории и отдавать плееру Mrs.Haneki Работа 1 05.10.2015 13:40
функция просмотра имеющихся файлов в директории javascriptus-maximus-∆ Общие вопросы Javascript 5 18.11.2014 15:43
Получить файлы из директории Snakes Общие вопросы Javascript 3 09.01.2014 22:09
UI datepicker отображение произвольной даты при загрузке al456 jQuery 6 30.12.2013 03:37
jQuery:как получить список файлов в директории Chaos Lord jQuery 4 30.11.2009 19:55