이제 Node JS, Grunt 및 bootstrap-sass를 사용 중입니다. 그래서, 우리는 컴파일 작업을하지 않는 다른 자산을 가지고 있습니다. 그래서 동기화 작업을 추가했습니다. 두 경로 사이에 수정 된 파일 만 복사합니다. 이것은 나를 위해 잘 작동하지만, 나는 확실하지 않다 경우의 모범 사례 :
/**
* My Gruntfile.
*
*/
module.exports = function (grunt)
{
grunt.loadNpmTasks("grunt-sass");
grunt.loadNpmTasks("grunt-sass-lint");
grunt.loadNpmTasks("grunt-bootlint");
grunt.loadNpmTasks("grunt-contrib-jshint");
grunt.loadNpmTasks("grunt-postcss");
grunt.loadNpmTasks("grunt-sync");
var relaxerrors = [
"App/Mvc/views/notallowed.phtml",
"App/Mvc/views/ajax/*.phtml",
"App/Mvc/views/event/*.phtml",
"App/Mvc/views/forum/*.phtml",
"App/Mvc/views/index/news.phtml",
];
grunt.initConfig({
sass: {
options: {
includePaths: ["node_modules/bootstrap-sass/assets/stylesheets/bootstrap"],
precision: 10,
sourcemap: "inline",
trace: true,
unixNewlines: true
},
dist: {
files: {
"web/css/frontend.min.css": "assets/styles/frontend.scss",
"web/css/backend.min.css": "assets/styles/backend.scss",
"web/lib/bootstrap/css/bootstrap.min.css": "node_modules/bootstrap-sass/assets/stylesheets/bootstrap.scss"
}
}
},
sasslint: {
target: [ "assets/styles/*.scss" ]
},
jshint: {
files: [ "assets/js/*.js" ],
options: {
globals: {
jquery: true
}
}
},
bootlint: {
options: {
stoponerror: true,
showallerrors: true,
stoponwarning: false,
relaxerror: {
"E001": relaxerrors,
"W001": relaxerrors,
"W002": relaxerrors,
"W003": relaxerrors,
"W005": relaxerrors
}
},
files: [ "App/Mvc/views/*.phtml", "App/Mvc/views/*.html" ]
},
postcss: {
options: {
map: true,
processors: [
require("pixrem")(), // add fallbacks for rem units
require("autoprefixer")({
browsers: ["last 2 versions"]
})
]
},
dist: {
src: ["web/lib/bootstrap/css/*.css", "web/css/*.css"]
}
},
sync: {
main: {
files: [{
src: [
"node_modules/bootstrap-sass/assets/fonts/**", // include everything
'!**/*.txt' // but exclude txt files
],
dest: 'web/lib/bootstrap/fonts',
}],
pretend: true, // Don't do any IO. Before you run the task with `updateAndDelete` PLEASE MAKE SURE it doesn't remove too much.
verbose: true // Display log messages when copying files
}
}
}
);
grunt.registerTask("validate:styles", [ "sasslint" ]);
grunt.registerTask("validate:js", [ "jshint" ]);
grunt.registerTask("validate:bootstrap", [ "bootlint" ]);
grunt.registerTask("validate:all", [ "validate:bootstrap", "validate:styles", "validate:js" ]);
grunt.registerTask("build:styles", [ "validate:styles", "sass", "postcss", "sync" ]);
// default task. Run all
grunt.registerTask("default", [ "validate:all", "sass", "postcss", "sync" ]);
};
내 package.json :
{
"name": "myProjectDeps",
"version": "1.0.0",
"dependencies": {
"grunt": "^1.0.1",
"grunt-bootlint": "^0.10.1",
"grunt-cli": "^1.2.0",
"grunt-contrib-compress": "^1.3.0",
"grunt-contrib-concat": "^1.0.1",
"grunt-contrib-cssmin": "^1.0.2",
"grunt-contrib-jshint": "^1.0.0",
"grunt-contrib-uglify": "^2.0.0",
"grunt-sass-lint": "^0.2.0",
"grunt-sync": "^0.6.2"
},
"devDependencies": {
"autoprefixer": "^6.5.1",
"bootstrap-sass": "^3.3.7",
"grunt-postcss": "^0.8.0",
"grunt-sass": "^1.2.1",
"node-sass": "^3.10.1",
"pixrem": "^3.0.2",
"typescript": "^2.0.6",
"typings": "^1.5.0"
}
}
는,이 당신을 위해 일 전 세계적으로 꿀꿀를 설치하지 않는 경우 또는 node_modules, e에서 프로젝트 루트와 관련된 grunt 파일을 호출하십시오. 지.
my/dir/root> ./node_modules/bin/grunt valdiate:styles
(작동하는 경우 테스트되지 않음).